将闭包作为参数传递给另一个函数是行不通的
Passing a Closure as an Argument to another Function won't work
我有一个接受参数的函数 evaluate
。第一个参数是 Int
。闭包的第二个参数采用 Int
和 returns 和 Double
。函数evaluate
然后returns一个[Double]
。返回数组的第 k 个元素是对 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([=10=] * [=10=] * [=10=] + 2 * [=10=] + 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))
}
我有一个接受参数的函数 evaluate
。第一个参数是 Int
。闭包的第二个参数采用 Int
和 returns 和 Double
。函数evaluate
然后returns一个[Double]
。返回数组的第 k 个元素是对 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([=10=] * [=10=] * [=10=] + 2 * [=10=] + 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))
}