将闭包作为参数传递给另一个函数将不起作用
问题描述:
我有一个函数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]
答
的myFunction:
标签丢失。您的通话evaluate
应该是:
evaluate(5, myFunction: polyTableClosure)
此外,在指数i
访问一个空数组不会创建索引新插槽。它会失败。
您必须追加到数组:
for i in 1...n {
doubles.append(myFunction(i))
}
+0
是的问题是{双打[我] = myFunction(我)}。我不必这样明确地做(评估(5,myFunction:polyTableClosure)}。这是{打印(评估(5,polyTableClosure))}工作正常。非常感谢!!!我在这上面拉了一小时头发。 –
谢谢! @Filburt对不起 –