我的代码中有以下问题:
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生成错误消息: 找不到接受上述参数的“下标”的重载
答案 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])
}