【发布时间】:2016-08-01 08:07:24
【问题描述】:
在使用 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!!!
这和其他语言真的不一样。
【问题讨论】:
-
使用 self.dynamictype.name
-
你是对的。你能告诉我为什么它与其他语言有很大不同吗?
-
您可以同时拥有一个实例属性和一个同名的类型(类/静态)属性。
标签: swift swift2 constants static-members dynamictype