gpt4 book ai didi

ios - 如何访问类常量和变量

转载 作者:搜寻专家 更新时间:2023-11-01 06:45:27 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com