gpt4 book ai didi

ios - swift 关闭奇怪的行为

转载 作者:搜寻专家 更新时间:2023-11-01 06:10:19 26 4
gpt4 key购买 nike

为什么这段代码可以编译(在 Playground 中):

func text (f: String -> Void) {
f("text")
}

func foo(s: String) {
countElements(s)
}

text() {
s in
foo(s)
}

而这个不是:

func text (f: String -> Void) {
f("text")
}

func foo(s: String) {
countElements(s)
}

text() {
s in
countElements(s)
}

错误信息:

Cannot convert the expression's type '(($T3) -> ($T3) -> $T2) -> (($T3) -> $T2) -> $T2'       to type '_BuiltinIntegerLiteralConvertible'

我可以看出有些东西有返回类型,有点 Swift 认为我想返回 int 但我只想打印它

最佳答案

如果您添加显式的 return 语句,则第二个版本的代码可以工作:

text() {
s in countElements(s)
return
}

发生这种情况的原因是它使用隐式返回,作为一个单语句闭包,所以它尝试使用 countElements 的返回值,这与预期的返回类型不匹配, 无效。明确的 return 解决了这个问题。

至于为什么它以不同的方式表现,在前一种情况下 foo 隐式返回 Void,这与闭包返回类型匹配。

更多信息:Implicit Returns from Single-Expression Closures

关于ios - swift 关闭奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26800629/

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