在Objective-C有十年经验之后,我正在学习Swift3.0。
在使用元组时,我发现将多个值组合在一起非常有用。我开始将它与Obj-C的struct
进行比较。
但是在将它传递给函数或从函数返回时,幻想变成了屁股的痛苦!
你不能
return
整个元组在这两种情况下,您都必须将其分解为单独的数据类型。
我是否从上述观察中得到了正确的结果?
答案 0 :(得分:2)
以下是使用typealias
的解决方案,因此您不必反复使用元组:
typealias Complex = (Int, Int)
var complex1 = (2, 4)
var complex2 = (3, 5)
func addComplexNumbers(c1:Complex, c2:Complex) -> Complex {
let sum = (c1.0 + c2.0, c1.1 + c2.1)
return sum
}
print("Sum = \(addComplexNumbers(c1:complex1, c2:complex2))")
如果您打算单独检索值,也可以在元组中使用命名参数:
typealias Complex = (x: Int, y: Int)
答案 1 :(得分:0)
根据Hamish提供的方向,我知道绑定到一个名为"splatting" is purposefully removed的值。在传递四个值而不是两个值之间看起来有些差不多。
但是我们可以通过以下方式使用:
//This is an example of Complex number.
// 2+4i adding with 3+5i will become 5+9i
var complex1 = (2, 4)
var complex2 = (3, 5)
func addComplexNumbers(c1:(Int, Int), c2:(Int, Int)) -> (Int, Int){
let sum = (c1.0+c2.0, c1.1+c2.1)
return sum
}
print("Sum = \(addComplexNumbers(c1:complex1, c2:complex2))")