extension Array {
func sum() -> Int {
var sum = 0
for num in self {
sum += num
}
return sum
}
}
[1,2,3].sum()
此代码显示了我想要做的事情。虽然我在这一行上收到错误:sum += num
。我得到的错误是:Could not find an overload for '+=' that accepts the supplied arguments
。
我认为错误与Array可以包含许多不同类型的事实有关,而不仅仅是Int,所以它的问题就在于此。但是如何解决?
答案 0 :(得分:4)
目前还没有一种方法可以只扩展特定类型的Array
(在这种情况下为Array<Int>
)。这是一个很好的请求,以提交bugreport.apple.com
与此同时,你可以这样做(不在扩展名中):
func sum(ints:Int[]) -> Int {
return ints.reduce(0, +)
}
答案 1 :(得分:3)
所需要的只是明确转换为Int
:
extension Array {
func Sum() -> Int {
var sum = 0
for num in self {
sum += (num as Int)
}
return sum
}
}
println([1,2,3].Sum()) //6