如何访问类常量和变量

时间:2015-07-11 02:01:50

标签: ios swift

为什么我不能在类级别使用变量或常量执行操作?这是不允许的还是我需要用来访问它们的关键字?这是不好的做法吗?

控制器:

class ViewController: UIViewController {
    let one = 1
    let two = 2
    var sum = one + two
}

错误:

ViewController.Type does not have a member named 'one'

2 个答案:

答案 0 :(得分:3)

类变量和常量必须为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。这意味着它们对整个班级来说都是不变的。如果你需要特定于实例的常量,你不能在函数或闭包之外使用它们(正如你已经注意到的那样) - 作为变量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

答案 1 :(得分:0)

简单修复

   override func viewDidLoad() {
        super.viewDidLoad()
        var result = one + two
    }