我正在学习 Swift,但在理解函数的工作原理时遇到了问题。 假设我有一个简单的函数:
func sayHello() {
println("hello there")
}
而且我可以通过这种方式将此函数分配给变量或常量:
var hello = sayHello
所以现在变量 hello 是可以这样写的函数类型:
var hello:() -> () = sayHello
现在我可以通过键入来运行/执行(这样的措辞合适吗?)sayHello 函数:
hello()
它打印我的输出“你好”
问题是这之间有什么区别:
var hello1 = sayHello()
hello1 // it prints out hello there string
还有:
var hello2 = sayHello
hello2() // it prints out hello there string as well
请您参考如下方法:
简而言之,
hello1是执行 sayHello 的结果.但是因为你的函数不返回任何东西,它的值将是 Void .
hello2另一方面是对函数 sayHello 的引用.它的类型是 () -> () .这就是为什么您需要执行它(示例中尾随的“()”)以获得结果。
这就是我们所说的 First Class Function 。其中一个特点是函数可以像变量一样传递和使用。
