使用swift后,它破坏了我对静态变量和常量的看法。
为什么Swift不允许我们在其他方法中调用静态变量和常量?
例如:
class Aa {
static let name = "Aario"
func echo() {
print(name) // Error!
}
}
奥格里斯先生叫我用dynamicType
。
class Aa {
static var name = "Aario"
func echo() {
print(self.dynamicType.name)
}
}
let a = Aa()
a.dynamicType.name = "Aario Ai"
a.echo() // it works!!!
有用!那么,为什么要使用dynamicType调用静态变量呢?
最后,答案是:
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!!!
与其他语言确实不同。
即使使用这种类型的代码编写静态变量,也必须使用其类型来解决。请参见Swift编程语言(Swift 2.2)-属性(在“查询和设置类型属性”中):
与实例属性一样,查询类型属性并使用点语法对其进行设置。但是,查询类型属性并在该类型上进行设置,而不是在该类型的实例上进行设置。
在您的代码中,只需编写Aa.name
而不是,就name
可以了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句