我正在尝试创建一个获取CGPoint选项数组的方法,并将它们分配给nil。我收到错误“无法将类型为nil的值分配给CGPoint类型的值?”。我很困惑,因为我认为选项可能是nil或某种类型的指定对象。谢谢你的帮助(:
func resetArray(arr: [CGPoint?])
{
for index in 0...arr.count-1
{
arr[index] = nil
}
}
答案 0 :(得分:1)
将参数传递给函数时,它是不可变的,因此不允许更改它。对于数组,作为值类型,这意味着您不能使用任何mutating
方法或以其他方式执行任何更改值的操作。
您可以通过在inout
修饰符前面加上参数来使参数可写:
func resetArray(inout arr: [CGPoint?])
^^^^^
注意,在调用函数时,必须通过在&
&符号前加上前缀来传递参数:
var array = [...]
resetArray(&array)
^
您还可以创建一个可修改的参数,但只能在函数体内看到更改(这意味着在传递给函数的原始参数的副本上会发生更改) - 这可以通过使用{{1修饰符:
var