我在 Swift中有以下语法: func basicFunction(anArray:[Int], aValue:Int) - Int { for (var i = 0; i5; ++i) { if anArray[i] == 0 { anArray[i] = aValue //I get an error in XCode } } return 1} 我收到以下Xcode错误:’@lvalue $T5’
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错误:’@lvalue $T5’与’Int’不同
我究竟做错了什么?
默认情况下,函数参数是不可变的,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)