2015-09-04 216 views
1

我有一個函數evaluate需要參數。第一個參數是Int。關閉的第二個參數需要Int並返回Double。功能evaluate然後返回[Double]。返回數組的第i個元素是對值k評估第二個參數的結果,其中k = 0,1,...,n將閉包作爲參數傳遞給另一個函數將不起作用

func evaluate(n: Int, myFunction: Int -> Double) -> [Double] { 
    var doubles = [Double]() 
    for i in 1...n { 
     doubles[i] = myFunction(i) 
    } 

    return doubles 
} 

let polyTableClosure: Int -> Double = { return Double($0 * $0 * $0 + 2 * $0 + 4) } 

print(evaluate(5, polyTableClosure)) 

期待這樣的:[7, 16, 37, 76, 139]

+0

謝謝! @Filburt對不起 –

回答

2

myFunction:標籤丟失。您的通話evaluate應該是:

evaluate(5, myFunction: polyTableClosure) 

此外,在指數i訪問一個空數組不會創建索引新插槽。它會失敗。

您必須追加到數組:

for i in 1...n { 
    doubles.append(myFunction(i)) 
} 
+0

是的問題是{雙打[我] = myFunction(我)}。我不必這樣明確地做(評估(5,myFunction:polyTableClosure)}。這是{打印(評估(5,polyTableClosure))}工作正常。非常感謝!!!我在這上面拉了一小時頭髮。 –

相關問題