函数类型与函数(方法)

时间:2016-06-01 17:37:44

标签: swift function

当我遇到这个时,我正在研究Swift:

var action: () -> Void = {
    print "hi"
}   
var someVariable: Int -> Int

据我所知,到目前为止,这些应该是函数类型的变量“ 动作 ”是“不带任何参数并且不返回任何内容” -type而“ someVariable ”是“接受Int并返回Int” -type。

所以我的问题是:为什么不使用 func

func action() {
    print "hi"
}
func someVariable(a: Int) -> Int {
    return a + 1
}

这两个是一回事吗?或者在编写代码以使用 func 而不是函数类型变量时有一些偏好,反之亦然?如果有,何时使用什么?

2 个答案:

答案 0 :(得分:3)

以下情况:

var someVariable: Int -> Int 

您使用方法签名声明一个接受Int并返回Int的变量。您可以指定任何符合此方法签名的函数。您可以传递此变量,并在必要时将其指定为任何其他变量。它增加了如何分配方法的灵活性。

答案 1 :(得分:1)

功能是闭包的特例。根据{{​​3}}:

  

全局函数是具有名称但不捕获任何名称的闭包   值。

     

嵌套函数是具有名称并且可以捕获的闭包   封闭函数的值。闭包表达式未命名   用轻量级语法编写的闭包,可以从中捕获值   他们周围的环境。 Swift的闭包表达式很干净,   清晰的风格,优化鼓励简洁,杂乱无章   常见场景中的语法。

作为闭包的特例,函数可以在任何需要闭包的地方使用。