双箭头在最后一个函数的返回类型中表示什么?
它们是否用于表示两种不同的返回值?
如果是这样,你怎么知道箭头在哪个顺序,如果函数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) -> Int与Int -> 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的函数的函数.