ios - swift中的函数数组(输出需要说明)

标签 ios arrays swift

我正在使用 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/

相关文章:

java - 在 Java 中生成 2d Json 数组

php - 如何获取围绕中心坐标和半径的N个坐标

ios - 双击内部有 contenteditable 的 div 和 iframe 禁用 div

ios - 轻量级数据迁移

ios - 如何以编程方式在 View 之间转换?

objective-c - iPad 的基于 ARC 的项目中内存不足访问崩溃报告

arrays - 如何为每个索引汇总一个整数数组?

java - 用不同的分隔符分割JAVA

swift - [Swift._NSContiguousString 字节] : unrecognized selector sent to instance

ios - 父子关系与引用语义混淆(swift)