我刚刚使用Swift语言更改下载了Xcode Beta4,并在一段代码中更新了数组(你知道,Int []到[Int])。我没有改变任何其他东西。现在我的代码将不会编译,因为一个非常怪异的错误。
func addto(src: [Int], v: [Int]) {
for var i = 0; i < src.count; ++i {
src[i] = (src[i] + v[i]) % 2
}
}
这会导致以下错误:
'@ Ivalue $ T8'与'Int'
不同
有谁知道导致此错误的原因是什么?代码应该没问题。
提前致谢。
答案 0 :(得分:1)
Delare src
作为参数var
在swift中是常量,您要更改src
的值,因此将其声明为var
func addto(var src: [Int], v: [Int]) {
for var i = 0; i < src.count; ++i {
src[i] = (src[i] + v[i]) % 2
}
}
您没有从函数返回结果。如果您希望在函数中传递第一个变量的结果,您可以将其声明为inout
func addto(inout src: [Int], v: [Int]) {..}
然后致电
var abc = [1,2]
addto(&abc,[2,4]) //& is required for inout
println(abc) // will get result of function [1,0]
或简单地从函数
返回结果//Use `-> [Int]` as return type
func addto(var src: [Int], v: [Int]) -> [Int] {
for var i = 0; i < src.count; ++i {
src[i] = (src[i] + v[i]) % 2
}
return src
}
var abc = addto([1,2],[2,4]) //abc will contains [1,0]