【问题标题】:How to add tuples together如何将元组添加在一起
【发布时间】:2019-03-18 07:02:17
【问题描述】:

如何将整数元组加在一起?我遇到了这个post,但我收到了一个错误:

参数类型 '(Int, Int)' 不符合预期的类型 'Numeric'

当我尝试使用数组中的元组时。我不熟悉泛型,所以我什至不确定从哪里开始修复这个函数以适应我的代码。有什么建议吗?

func calculate() {
    let testArray = [(0, 0), (0, 7), (7,7), (7,0)]
    let nearbyObjects = [(-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1)]
    // this is where I get the error message
    let sum = add(nearbyObjects[0])(testArray[0])
}

func add<T : Numeric>(_ a: T...) -> (_ b: T...) -> [T] {
    return { (b: T...) -> [T] in
        return zip(a, b).map { $0.0 + $0.1 }
    }
}

理想情况下,我希望能够从上面的数组中添加两个元组。所以,(7,7) + (1, -1) = (8, 6)

【问题讨论】:

    标签: swift tuples


    【解决方案1】:

    试试这个:

    func +<T : Numeric>(_ a: (T, T), _ b: (T, T)) -> (T, T) {
      return (a.0 + b.0, a.1 + b.1)
    }
    
    let result = (7, 7) + (1, -1)
    print(result) // (8, 6)
    

    【讨论】:

    • 它返回错误消息“成员运算符'+'必须至少有一个'MyClass'类型的参数”
    • @LTC 您应该将此方法放在您拥有的任何类型(即类、结构、协议)之外。
    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 2018-12-06
    • 2014-08-05
    相关资源
    最近更新 更多