我正在使用 swift 并从某处收到一个问题,但不明白在运行该函数时我会得到什么输出。
import UIKit
var i = 0
var closureArray : [() -> ()] = []
for _ in 1...5{
closureArray.append {
print(i)
}
i += 1
}
当我输入时我会得到什么:-
closureArray[0]()
我知道答案,但我想知道背后的解释。
最佳答案
您正在将函数体附加到 closureArray
并且没有返回类型,因为函数类型没有输入参数也没有返回类型。
所以只有 closureArray
将包含 5 个函数 block 。
每个元素本身就是一个函数,只有一个 print
操作,该操作将打印数组索引。但是如果在 for
循环之后调用它们,它们总是打印 i
因此 closureArray[0]()
将调用第 0 个索引函数,该函数将仅打印“5”,因为 i
的最新值为 5,并将返回 void。
解释很简单。
关于ios - swift中的函数数组(输出需要说明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54361565/