我在Swift
中有以下语法:
func basicFunction(anArray:[Int], aValue:Int) -> Int {
for (var i = 0; i<5; ++i)
{
if anArray[i] == 0
{
anArray[i] = aValue //I get an error in XCode
}
}
return 1
}
我得到以下Xcode error
:'@lvalue $T5
'与'Int
'不相同
我做错了什么?
答案 0 :(得分:7)
默认情况下,函数参数是不可变的,Swift编译器会提供可怕的错误消息。
无论如何,因为anArray
是不可变的,所以你无法修改它。这就是您收到错误消息的原因。声明它为inout
:
func basicFunction(inout anArray:[Int], aValue:Int) -> Int {
for (var i = 0; i<5; ++i) {
if anArray[i] == 0 {
anArray[i] = aValue
}
}
return 1
}
在数组参数前面用&
调用它:
basicFunction(&someArray, 99)