我在https://www.swiftbysundell.com/posts/using-autoclosure-when-designing-swift-apis上找到了这个例子
我对使用autoclosure
和延迟操作感到困惑。我想知道如果从此示例中删除@autoclosure
会发生什么。我知道然后需要花括号但除此之外?无处不在的解释是表达式只有在你调用之后才会被评估。但是当我们调用它时,每个函数都会被评估。所以如何autoclosure
帮助它推迟。或者只是我们得到语法松弛,不需要在表达式周围放置花括号
答案 0 :(得分:0)
或者只是我们得到语法松弛,不需要在表达式周围放置花括号
完全。它还隐藏来自调用者的延迟评估。
另一个例子是“短路”逻辑运算符||
和&&
,例如
public static func ||(lhs: Bool, rhs: @autoclosure () throws -> Bool) rethrows -> Bool
所以在
let b = functionReturningBool() || otherFunctionReturningBool()
如果第一个函数已经返回,则不会调用第二个函数
true
。