gpt4 book ai didi

swift - 为什么简写参数名称 $0 返回所有参数的元组?

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

我试图定义一个可以保存闭包的变量,但在使用 Swift 的简写参数名称时遇到了一些困难。获取以下代码片段:

var returnAString: (String, String) -> String
returnAString = { return $0 }

这给了我编译错误'(String, String)' is not conversion to 'String'。当我修改闭包返回带有第一个参数值的字符串时,我会在元组中返回两个参数值。

println(returnAString("1", "2")) // Prints "(1, 2)"

但是,如果我修改闭包以打印第二个参数,则会按预期打印正确的参数。

returnAString = { $1 }
println(returnAString("1", "2")) // Prints "2"

我感觉我在这里做了一些有点愚蠢的事情,但我找不到任何解释为什么会发生这种情况。

最佳答案

Closures § Shorthand Argument Names

Shorthand Argument Names

…the number and type of the shorthand argument names will be inferred from the expected function type.

看起来这是预期的行为。通过仅提供 $0,您就可以推断(至少对系统而言)您需要一个元组。

这似乎只是使用 $0 的特殊情况。例如,以下内容无法编译。

var returnAString3: (String, String, String) -> String
returnAString3 = { return $1 }

无论如何修改。

returnAString3 = { return $1.0 } // still fails.

关于swift - 为什么简写参数名称 $0 返回所有参数的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44752268/

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