gpt4 book ai didi

swift - 将 if-let 与尾随闭包一起使用

转载 作者:可可西里 更新时间:2023-11-01 01:06:30 26 4
gpt4 key购买 nike

我有一个函数,例如:

func myFunction(aString: String, aClosure: (intArg: Int) -> (Void)) -> String? {
aClosure(intArg: 1)
return aString
}

我故意保持简单,以便更好地表达我的问题。我有两个问题。首先,是否有比以下方法更好的方法来使用带有尾随闭包的此函数:

if let newString = (myFunction("hello world") {
(intArg: Int) -> Void in
println("Do nothing")
}) {
println(newString)
}

我不喜欢在函数调用周围放置那些额外的括号。

我的第二个问题 -- 为什么没有打印“Do nothing”?

最佳答案

如果您真的想内联闭包,我发现返回将尾随闭包放在内部函数圆括号中比将整个函数 + 闭包放在圆括号中要好。

所以:

if let newString = myFunction("hello world", { _->() in println("Do nothing") }) {
println(newString)
}

代替:

if let newString = (myFunction("hello world") { _->() in println("Do nothing") }) {
println(newString)
}
如果我将您的代码粘贴到 Playground 上,

Do nothing 打印得很好——尽管只在时间轴 (cmd-opt-enter) 中,而不是在右侧边距中。

关于swift - 将 if-let 与尾随闭包一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27431978/

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