2015-07-21 30 views
0

我試圖創建一個方法,它接受一個CGPoint選項的數組,並將它們分配給nil。我收到一個錯誤「無法將類型爲nil的值賦給CGPoint類型的值?」。我很困惑,因爲我認爲可選項可以是零或某種類型的指定對象。感謝您的幫助(:在數組中指定可選爲零

func resetArray(arr: [CGPoint?]) 
{ 
     for index in 0...arr.count-1 
     { 
      arr[index] = nil 
     } 
} 

回答

1

當一個參數傳遞給一個函數,它是不變的,所以你不能去改變它對於數組,作爲值類型,這意味着你不能使用任何mutating方法。

func resetArray(inout arr: [CGPoint?]) 
       ^^^^^ 

需要注意的是,調用函數時,參數必須傳遞:或通過與inout修改它的前綴,否則執行更改數值的任何行動

您可以進行參數寫入。通過與&符號字符前綴是:

var array = [...] 
resetArray(&array) 
     ^

你也可以做一個參數修改,但與變化僅從(這意味着傳遞給原始參數的拷貝發生變化的函數體內可見函數) - 可以通過使用var修改器:

func resetArray(var arr: [CGPoint?]) 
       ^^^ 
+0

因此,使用inout將修改原始數組? – Lahav

+0

是的,這是正確的 – Antonio