1

我有一个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]

4

1 回答 1

2

myFunction:标签丢失。你的电话evaluate应该是:

evaluate(5, myFunction: polyTableClosure)

此外,访问索引处的空数组i不会在该索引处创建新插槽。它会失败。

您必须附加到数组:

for i in 1...n {
    doubles.append(myFunction(i))
}
于 2015-09-04T08:24:16.827 回答