我有一个数据结构,它是一个数据提供者,并设置了一个值数组,我想要设置的一个特定值是实例成员的值。
为了将其作为一个具体的例子,我在做
时出错struct DataProvider {
let largeInt = 50000
let ints: [Int] = [2, 3, 4, largeInt]
}
编译器说
实例成员' largeInt'不能用于数据类型' DataProvider'
有没有办法可以将bigInt作为初始化整数的一部分而不是实际使用文字值50000替换它?
答案 0 :(得分:5)
原因已经由vacawama解释了。你也可以使用静态
struct DataProvider {
static let largeInt = 50000
let ints: [Int] = [2, 3, 4, largeInt]
}
答案 1 :(得分:4)
您定义它的方式的问题是largeInt
在结构初始化之前无法读取,因此您无法在另一个属性的初始化中使用它。 / p>
您可以使用初始化程序初始化它,而不是内联初始化:
struct DataProvider {
let largeInt: Int
let ints: [Int]
init() {
largeInt = 50000
ints = [2, 3, 4, largeInt]
}
}
或者您可以将largeInt
传递给初始化程序:
struct DataProvider {
let largeInt: Int
let ints: [Int]
init(largeInt: Int) {
self.largeInt = largeInt
ints = [2, 3, 4, largeInt]
}
}
let dp = DataProvider(largeInt: 50000)