为什么数组初始化不能引用swift中的常量成员变量?

时间:2015-10-04 16:15:19

标签: arrays swift

我有一个数据结构,它是一个数据提供者,并设置了一个值数组,我想要设置的一个特定值是实例成员的值。

为了将其作为一个具体的例子,我在做

时出错
struct DataProvider {
    let largeInt = 50000
    let ints: [Int] = [2, 3, 4, largeInt]
}

编译器说

  

实例成员' largeInt'不能用于数据类型' DataProvider'

有没有办法可以将bigInt作为初始化整数的一部分而不是实际使用文字值50000替换它?

2 个答案:

答案 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)