为什么当我们调用“任务”变量时,必须将其写为“task()”

时间:2016-02-16 03:18:23

标签: swift function

我是Swift的新手,正在尝试学习扩展的概念。我在youtube上看到了这段代码。我的问题是,为什么当我们调用“任务”变量时,它必须写成“task()”。我理解如果从“task()”中删除“()”,代码将无效。但我很困惑为什么在我们尝试使用变量“任务”时必须包含“()”。

extension Int {
    func repetition(task: () -> Void){
        for _ in 0..<self{
            task()
        }
    }
}

3.repetition({print("hello")})

1 个答案:

答案 0 :(得分:2)

变量可以包含函数。当他们像这样被写成时,他们被称为闭包。关于闭包有很多东西需要阅读和学习。当您的变量包含一个函数并且您想要调用该函数时,您可以添加括号和函数所需的任何参数。

查看有关闭包here的文档。

在您的情况下,任务的定义是() -> Void,这意味着它是一个不带参数并且不返回结果(void)的函数。当闭包获取参数时,您可以通过您选择的名称引用它们,或者使用$ 0,$ 1等位置引用它们。

闭包通常用于异步函数,以便在代码完成后回调代码。