我是Swift的新手,正在尝试学习扩展的概念。我在youtube上看到了这段代码。我的问题是,为什么当我们调用“任务”变量时,它必须写成“task()”。我理解如果从“task()”中删除“()”,代码将无效。但我很困惑为什么在我们尝试使用变量“任务”时必须包含“()”。
extension Int {
func repetition(task: () -> Void){
for _ in 0..<self{
task()
}
}
}
3.repetition({print("hello")})
答案 0 :(得分:2)
变量可以包含函数。当他们像这样被写成时,他们被称为闭包。关于闭包有很多东西需要阅读和学习。当您的变量包含一个函数并且您想要调用该函数时,您可以添加括号和函数所需的任何参数。
查看有关闭包here的文档。
在您的情况下,任务的定义是() -> Void
,这意味着它是一个不带参数并且不返回结果(void)的函数。当闭包获取参数时,您可以通过您选择的名称引用它们,或者使用$ 0,$ 1等位置引用它们。
闭包通常用于异步函数,以便在代码完成后回调代码。