【问题标题】:How to call class init with tuples array parameter in Swift?如何在 Swift 中使用元组数组参数调用类 init?
【发布时间】:2014-07-18 13:30:56
【问题描述】:

我的代码中有以下问题:

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 生成错误信息: 找不到接受所提供参数的“下标”的重载

【问题讨论】:

    标签: arrays swift tuples


    【解决方案1】:

    你应该这样做:

    class A {
        let smth1: [[(Int,Int)]] = [[(1,2),(2,3)],
                                    [(3,4),(4,5)]]
    
        @lazy var inst: B = {
            return B(smth2:self.smth1[1])
        }()
    }
    

    您不能在初始化/实例化之前使用实例属性。 IE。没有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])
    }
    

    【讨论】:

      猜你喜欢
      • 2015-06-06
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多