用户在Swift中定义的chooseStepFunction()中两个箭头的目的是什么?

Mic*_*ron 7 function swift

双箭头在最后一个函数的返回类型中表示什么?

它们是否用于表示两种不同的返回值?

如果是这样,你怎么知道箭头在哪个顺序,如果函数chooseStepFunction()是不同的类型?例如,如果stepForward()退回了String

func stepForward(input: Int) -> Int{
    return input + 1
}

func stepBackward(input: Int) -> Int{
    return input - 1
}

func chooseStepFunction(backwards: Bool) -> (Int) -> Int{
    return backwards ? stepBackward: stepForward
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ier 10

鉴于:

(x) -> (y) -> z
Run Code Online (Sandbox Code Playgroud)

你会读到这个:

它接收一个函数x,并返回它接收一个函数y,并返回z.

所以在这种情况下,chooseStepFunction是一个函数,它接受一个bool并返回一个接受int并返回一个int的函数.这是右关联的,所以你会把它读作:

(backwards: Bool) -> ((Int) -> Int)
Run Code Online (Sandbox Code Playgroud)

如果你记得第一组圆括号(周围Bool)不是特别特别,那么最容易阅读这个.它们就像第二组(左右Int).(实际上并不需要括号.(Int) -> IntInt -> Int.相同.)

当你遇到currying时,意识到这一点会有所帮助:

func addTwoNumbers(a: Int)(b: Int) -> Int
Run Code Online (Sandbox Code Playgroud)

这与以下内容完全相同:

(a: Int) -> (b: Int) -> Int
Run Code Online (Sandbox Code Playgroud)

获取int并返回一个接受int并返回int的函数的函数.