Передача замыкания в качестве аргумента другой функции не будет работать
У меня есть функция evaluate
это принимает аргументы. Первый аргумент Int
, Второй аргумент замыкания, который принимает Int
и возвращает Double
, Функция evaluate
затем возвращает [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($0 * $0 * $0 + 2 * $0 + 4) }
print(evaluate(5, polyTableClosure))
Ожидая что-то вроде: [7, 16, 37, 76, 139]
1 ответ
Решение
myFunction:
ярлык отсутствует. Ваш зов evaluate
должно быть:
evaluate(5, myFunction: polyTableClosure)
Кроме того, доступ к пустому массиву по индексу i
не будет создавать новый слот по этому индексу. Это не удастся.
Вы должны добавить в массив:
for i in 1...n {
doubles.append(myFunction(i))
}