gpt4 book ai didi

swift - 函数被调用但不执行

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

我有这个自定义运算符:

infix operator ?> : NilCoalescingPrecedence
func ?> (lhs: Any?, rhs: @autoclosure ()->Any) {
if lhs == nil {
print("lhs is nil")
rhs()
}
}

用法:

optional ?> {
print("executing")
}

问题是,当 lhs 为 nil 时,闭包不会执行。在控制台中正在打印“lhs is nil”,但之后没有打印“executing”。如何执行“lhs is nil”打印语句但不执行 rhs

最佳答案

导致此行为的原因是@autoclosure,如果删除它,它会正常工作。

这是因为 @autoclosure 会将你的闭包包装成一个闭包,所以现在你有这样的东西:

{ { print("executing") } }

外部闭包返回 Any,对吗?所以它只会返回闭包 { print("executing") } 并且什么都不做。

如果你想保留@autoclosure,你可以这样使用运算符:

optional ?> print("executing")

关于swift - 函数被调用但不执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45231887/

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