2016-03-30 31 views
-1

這個函數的目標是接收int和函數的數組。具有真值的數據將初始化爲arrayOfInts的新數組。我還是新來的,所以請耐心等待。使用swift編寫函數的錯誤

這裏是代碼

func Name(a:[Int],op:Int->Bool)->[Int] 
{ 

var array: [Int] 

    for i in 0..<a.count 
    { 
     if even(a[i]) == true 
      { 
       array[i] = a[i] 
      } 
    } 
    return array 
} 
+0

您還沒有向'arrayOfInts'添加任何值,但是您正嘗試從中讀取值。 –

+0

你需要追加你的元素 –

+0

arrayOfInts只是一個空的數組。它將從數組中獲取值。我仍然無能 – john

回答

3

您的arrayOfInts未初始化,導致此問題。 初始化它,你可以設置數組值爲零或任何適當的。

var arrayOfInts = [Int](count:a.count, repeatedValue: 0) 
+0

謝謝,如果我想要我的數組大小不依賴於數組,那該怎麼辦?我試過這個代碼:[0,1,2,3],它返回[0,2,0,0]。我預期的結果是[0,2] – john

+0

您可以使用count參數的任何值。我只是在示例中使用了a.count,因爲這是您正在嘗試執行的操作。如果你不想使用具體的價值。只需使用var arrayOfInts = [Int](),並將數組初始化爲零或空數。 –

+0

是的!謝謝你! – john

1

更改此

var arrayOfInts: [Int] 

這個

var arrayOfInts: [Int] = [] 

這將防止 「使用的未初始化」 的錯誤。但是當然你會在運行時崩潰,當你提到arrayOfInts[0]並且它不存在!

+1

'var arrayOfInts = [Int]()' – nhgrif

+0

我甚至不建議你的答案是錯誤的。我只是提供一個替代語法。通過大多數Swift樣式指南,首選是讓這個類型被推斷出來。 – nhgrif

+0

@nhgrif類型推理正在發生在這兩種情況下。這很微妙,但是馬特實際上更有趣,因爲Swift也是RHS上類型推斷的唯一語言之一。 –