gpt4 book ai didi

swift - 没有返回类型的单行闭包

转载 作者:IT王子 更新时间:2023-10-29 05:10:14 24 4
gpt4 key购买 nike

在 Swift 中,如果一个闭包只包含一个语句,它会自动返回从该语句返回的值。

这并不是在所有情况下都感觉很自然。让我们看一个例子:

func StringReturningFunc() -> String {
return "Test String"
}

// Error: Cannot convert the expressions type '() -> $T0' to type 'String'
let closure: () -> () = {
StringReturningFunc()
}

正如你所看到的,即使闭包应该只调用一个简单的函数,它也会尝试自动返回它的返回值,它的类型是 String,并且与返回类型不匹配 无效

我可以通过像这样实现闭包体来防止这种情况:

let _ = StringReturningFunc()

这感觉非常奇怪。

是否有更好的方法来做到这一点,或者这只是我必须忍受的东西?

最佳答案

发生这种情况的原因是单行表达式闭包的简写。在您的闭包中有一个隐含的“返回”。

let closure: () -> () = {
StringReturningFunc()
return
}

这样写应该可行

关于swift - 没有返回类型的单行闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24150400/

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