类型((Int) - > Int)在Swift中的含义是什么?

时间:2014-10-12 09:13:41

标签: types swift

我正在浏览Apple对Swift的介绍并遇到了这样的例子:

func makeIncrementer() -> ((Int) -> Int) {

    func addOne(number: Int) -> Int {
        return 1 + number
    }
    return addOne

}
var increment = makeIncrementer()
increment(7)

您能解释一下makeIncrementer函数的返回类型的语法吗?我知道这个函数返回另一个函数,但在这个上下文中((Int) -> Int)的作用对我来说仍然不清楚。

3 个答案:

答案 0 :(得分:7)

它表示该函数返回函数,并且返回的函数将Int作为输入参数并返回Int

在Swift中定义函数内的函数是完全合法的。

答案 1 :(得分:2)

(Int -> Int)表示以Int为参数并返回Int的闭包(或函数)。

声明闭包类型的语法是:

(parameters) -> (return_types)

parameters是闭包作为输入接收的参数列表,return_types是闭包返回的值列表。两者都是元组,但是在一个参数或一个返回类型的情况下,可以省略标识元组的括号。因此,例如,期望一个参数并返回一个值的clousure可以定义为:

parameter -> return_type

在你的情况下:

Int -> Int

是一个闭包,有1个输入参数Int类型并返回Int

返回类型括在括号中,以明确返回类型,但您也可以将其写为:

func makeIncrementer() -> Int -> Int {

在我看来,这比

更不可读
func makeIncrementer() -> (Int -> Int) {

答案 2 :(得分:1)

我对swift的语法并不完全熟悉,但我猜所有高阶函数都是一样的。 makeIncrementer是一个函数:

  • 采用参数
  • 返回一个函数:
    • 采用Int参数
    • 返回Int

视觉说明(a -> b表示将a类型作为参数并返回类型b)的函数:

 makeIncrementer -> (Int -> Int)
                           ^
                           |
                           |
                           a function that takes an Int and returns an Int,
                           i.e. (addOne in your case)