我正在尝试计算 Swift 中两个数组中值之间的差异。我想减去两个数组之间每个索引处的值。
我尝试执行以下操作:
var array1 : [Double] = [1, 2, 3, 4, 5]
var array2 : [Double] = [2, 3, 4, 5, 6]
var result = array2 - array1
预期答案:
结果 = [1, 1, 1, 1, 1]
我收到以下错误消息:
二元运算符“-”不能应用于两个“[Double]”操作数
以下工作有效:
var array1 : [Double] = [1, 2, 3, 4, 5]
var array2 : [Double] = [2, 3, 4, 5, 6]
let velocity = (0..<5).map { array2[$0] - array1[$0] }
print(velocity)
我想了解是否有一种有效的方法来实现这一目标。
你的尝试效果很好。一般来说,您需要检查哪个数组的元素较少(以防万一):
(0..<(min(array1.count, array2.count))).map { array2[$0] - array1[$0] }
或者,正如康纳在回答中提到的那样,使用zip
,它为您处理数组长度的比较。
zip(lhs, rhs).map { $0.0 - $0.1 }
您可以更进一步并超载-
运算符来实现您想要的语法(array1 - array2
):
func -<T: Numeric>(lhs: [T], rhs: [T]) -> [T] {
return zip(lhs, rhs).map(-)
}
// usage:
print([1,2,3] - [0, 1, 2])
但请注意,对于其他人来说,可能不太清楚一个数组“减去”另一个数组意味着什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)