如何在Swift中使用tuples数组参数调用类init?

时间:2014-07-18 13:30:56

标签: arrays swift tuples

我的代码中有以下问题:

class A {
    smth1: [[(Int,Int)]] = [[(1,2),(2,3)],
                            [(3,4),(4,5)]]

    var inst = B(smth2: smth1 [1])
}

class B {
    init (smth2: [(Int,Int)]){
    ...}
}

XCode生成错误消息: 找不到接受上述参数的“下标”的重载

1 个答案:

答案 0 :(得分:3)

您应该如何做到这一点:

class A {
    let smth1: [[(Int,Int)]] = [[(1,2),(2,3)],
                                [(3,4),(4,5)]]

    @lazy var inst: B = {
        return B(smth2:self.smth1[1])
    }()
}

在初始化/实例化之前,不能使用实例属性。即没有self因此无法访问smth1属性,即使它是常量。

或者,您可以将smth1声明为类变量并在没有@lazy初始化的情况下进行访问:

class A {
    class var smth1: [[(Int,Int)]] {
        return [[(1,2),(2,3)],[(3,4),(4,5)]]
    }

    var inst: B = B(smth2:smth1[1])
}