Es hat meine Sicht auf statische Variablen und Konstante nach der Verwendung von Swift zerstört.Swift: Warum können die nicht statischen Methoden statische Variablen und Konstanten (statische Let) ohne dynamicType nicht aufrufen?
Warum schnell erlaubt uns nicht, statische Variablen und konstant in anderen Methoden zu nennen?
zum Beispiel:
class Aa {
static let name = "Aario"
func echo() {
print(name) // Error!
}
}
Herr Oger hat mir gesagt, dynamicType
zu verwenden.
class Aa {
static var name = "Aario"
func echo() {
print(self.dynamicType.name)
}
}
let a = Aa()
a.dynamicType.name = "Aario Ai"
a.echo() // it works!!!
Es funktioniert! Warum sollte ich dynamicType verwenden, um statische Variablen aufzurufen?
Schließlich lautet die Antwort:
class Aa {
static var name = "Static Variable"
var name = "Member Variable"
func echo() {
print(self.dynamicType.name) // Static Variable
print(Aa.name) // Static Variable
print(name) // Member Variable
}
}
let a = Aa()
a.dynamicType.name = "Aario Ai"
Aa.name = "Static: Aario"
a.name = "Member: Aario"
a.echo() // it works!!!
Es ist wirklich anders mit anderen Sprachen.
Verwenden Sie self.dynamictype.name – ogres
Sie haben Recht. Kannst du mir sagen, warum es bei anderen Sprachen anders ist? – AarioAi
Sie können sowohl eine Instanzeigenschaft als auch eine type (class/static) -Eigenschaft mit demselben Namen haben. –