class myClass {
let x = 0
}
如何访问x
以外的myClass
常量?
答案 0 :(得分:4)
x
未定义为常量,而是作为可变实例属性。为了使它不可变(技术上与常量不同,但结果不会改变),你必须使用let
。
那就是说,如果它是一个实例属性,你需要一个类实例,因为该属性是作为类实例化的一部分创建的:
let instance = MyClass()
instance.x
如果你想使它成为一个静态属性,可以使用类型而不是实例来访问,你应该将它声明为静态:
class MyClass {
static let x = 0
}
但静态存储属性仅适用于swift 1.2。
对于以前的版本,您可以使用计算属性:
class var x: Int { return 0 }
或将类转换为结构:
struct MyClass {
static let x = 0
}
另一种解决方案是使用嵌套结构:
class MyClass {
struct Static{
static let x = 0
}
}
MyClass.Static.x
答案 1 :(得分:1)
您可以将其声明为静态var,如下所示:
class MyClass {
static var x = 0
}
然后您可以使用MyClass.x
在课外访问它。如果你声明它" class var",它会给你错误信息"类中尚未支持的类存储属性;你是说静态'?",所以他们以后可能会成为这种语言的一部分。此时,您应该为类创建计算属性:
class MyClass {
static var x: Int {
return 3
}
} // This actually makes no sense to be a computed property though
找到有关类型属性的信息