我一直在阅读iBooks中的swift编程指南。有人可以向我解释一下函数和闭包之间的区别。它只是没有名称,可以在表达式中使用吗?
我一直在阅读iBooks中的swift编程指南。有人可以向我解释一下函数和闭包之间的区别。它只是没有名称,可以在表达式中使用吗?
事实上,函数只是命名闭包。以下至少在概念上是等效的:
let foo = { println("hello") }
func foo()->(){ println("hello") }
在使用的情况下,这会变得更复杂一些 func
声明方法,因为在公共命名参数的自动插入等方面添加了一些有趣的糖。 func myMethod(foo:Int, bar:Int, baz:Int)
变 func myMethod(foo:Int, #bar:Int, #baz:Int)
, 例如。
但是,即使方法只是闭包的一个特例,它仍然是正确的,如果闭包也是如此,那么函数和方法也是如此。
事实上,函数只是命名闭包。以下至少在概念上是等效的:
let foo = { println("hello") }
func foo()->(){ println("hello") }
在使用的情况下,这会变得更复杂一些 func
声明方法,因为在公共命名参数的自动插入等方面添加了一些有趣的糖。 func myMethod(foo:Int, bar:Int, baz:Int)
变 func myMethod(foo:Int, #bar:Int, #baz:Int)
, 例如。
但是,即使方法只是闭包的一个特例,它仍然是正确的,如果闭包也是如此,那么函数和方法也是如此。
首先,让我们开始吧 关闭的定义,如维基百科中所见:
在编程语言中,闭包(也是词法闭包或函数 closure)是一个函数或函数的引用 引用环境 - 存储对每个引用的引用的表 非局部变量(也称为自由变量或上变量) 功能。
闭包是用于引用函数及其“关闭”的环境变量的术语。
Swift中Closure的定义是内联的 lambda表达式 和 块 在其他语言中,如C#和Ruby。
至于与功能的区别,来自 Swift文档:
实际上,函数中引入的全局函数和嵌套函数 特殊情况的封闭
因此,所有函数本质上都是闭包,用于在其上下文中存储对变量的引用。
Closure expressions
是编写闭包的便捷方式,并提供更简洁的语法。