我对在 Swift 中声明参数和返回类型有点困惑。
这些参数和返回类型的含义相同吗?这些括号 () 有什么用?
func myFunction() -> (()-> Int)
func myFunction() -> (Void-> Int)
func myFunction() -> Void-> Int
最佳答案
首先... ()
和 Void
是同一件事,你有两种不同的方式来编写同一件事。
第二... ->
是右结合的。因此,在示例中使用括号是没有意义的,就像使用 a + (b * c)
等表达式一样。该表达式与 a + b * c
相同。
基本上,您问题中的三个示例都定义了一个不带参数的函数,并返回一个不带参数并返回 Int 的闭包。
更多一些有帮助的例子:
func myFuncA() -> () -> Int -> String {
return { () -> Int -> String in return { (i: Int) -> String in String(i) } }
}
func myFuncB() -> () -> (Int -> String) {
return { () -> Int -> String in return { (i: Int) -> String in String(i) } }
}
func myFuncC() -> (() -> Int) -> String {
return { (f: () -> Int) in String(f()) }
}
在上面,myFuncA 与 myFuncB 相同,但它们都与 myFuncC 不同。
myFuncA(和 B)不带参数,并返回一个闭包。它返回的闭包不带参数并返回另一个闭包。第二个闭包采用 Int 并返回 String。
myFuncC 不带任何参数并返回一个闭包。它返回的闭包将闭包作为参数并返回一个字符串。第二个闭包不带任何参数并返回一个 Int。
希望用散文编写它不会让它变得更加困惑。
关于swift - 函数和闭包中的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35834586/