gpt4 book ai didi

swift - 函数和闭包中的括号

转载 作者:行者123 更新时间:2023-11-30 10:06:11 25 4
gpt4 key购买 nike

我对在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com