将Closure作为参数传递给另一个函数将不起作用

时间:2015-09-04 07:59:01

标签: functional-programming swift2 xcode7-beta6

我有一个带参数的函数evaluate。第一个参数是Int。闭包的第二个参数,它接受Int并返回Double。函数evaluate然后返回[Double]。返回数组的 k '元素是使用 k = 0,1,...,n的值 k 计算第二个参数的结果

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]

1 个答案:

答案 0 :(得分:2)

缺少var dataLoader = new DataLoader(); await dataLoader.InitializeAsync(); 标签。您对myFunction:的致电应该是:

evaluate

此外,访问索引evaluate(5, myFunction: polyTableClosure) 的空数组不会在该索引处创建新的插槽。它会失败。

您必须附加到数组:

i