下面代码中的两个赋值行都给出了这个错误:
' @ |价值$ T5'与' String'
不同
func PrintShoppingList(myList: Array<String>)
{
println(myList)
var cabbage = "cabbage"
let fish:String = "fish"
myList[0] = cabbage
myList[1] = fish
}
有什么问题?
答案 0 :(得分:5)
默认情况下,参数是常量,您不能改变它们。您可以将它们更改为var
,但这将是数组的副本。
func PrintShoppingList(var myList: Array<String>)
{
println(myList)
var cabbage = "cabbage"
let fish:String = "fish"
myList[0] = cabbage
myList[1] = fish
}
您也可以使用inout
参数来改变原始值,但请记住,数组长度不能通过上标扩展,因此myList[1] = fish
会在这种情况下崩溃。
func PrintShoppingList(inout myList: Array<String>)
{
println(myList)
var cabbage = "cabbage"
let fish:String = "fish"
myList[0] = cabbage
myList.append(fish)
}
答案 1 :(得分:3)
这里的问题是传递给函数的参数默认设置为常量并且是不可变的。所以你需要将它声明为var以便能够改变它。
func PrintShoppingList(var myList: Array<String>)
{
println(myList)
var cabbage = "cabbage"
let fish:String = "fish"
myList[0] = cabbage
myList[1] = fish
print(myList)
}
如果传递少于2个元素的数组,您的应用可能会崩溃,因为您正在访问 myList [0] 和 myList [1] 。因此,请确保您的数组至少包含要将数组传递给此方法的元素。