为什么我不能在类级别对变量或常量执行操作?这是不允许的还是我需要使用关键字来访问它们?这是不好的做法吗?
Controller :
class ViewController: UIViewController {
let one = 1
let two = 2
var sum = one + two
}
错误:
ViewController.Type 没有名为“one”的成员
最佳答案
类变量和常量必须是static
,例如,static let one = 1
。
此处只要两个 let
常量为 static
即可,以便它们可用于初始化类和实例变量。以下对我有用:
class MyClass {
static let one = 1
static let two = 2
static var sum = one + two
var instanceProduct = one * two
}
MyClass.one
MyClass.sum
MyClass().instanceProduct
请注意,在上面的示例中,您可以执行 MyClass.sum = 5
。如果您希望总和也保持不变,只需将其更改为 static let sum = one + two
。
要求是您在任何函数和闭包之外使用的常量都声明为 static let
。这意味着它们对整个类(class)来说都是真正不变的。如果您需要特定于实例的常量,则不能在函数或闭包之外使用它们(正如您所注意到的)——作为变量 sum
的解决方法,我建议使用 lazy
由闭包初始化的变量:
class MyClass {
let one: Int // value given in `init`
let two = 2
lazy var sum: Int = { self.one + self.two }()
init(one: Int = 1) {
self.one = one
}
}
MyClass().sum // 3
MyClass(one: 2).sum // 4
关于ios - 如何访问类常量和变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31352697/