使用Autoclosure

时间:2018-02-15 12:38:42

标签: swift

enter image description here

我在https://www.swiftbysundell.com/posts/using-autoclosure-when-designing-swift-apis上找到了这个例子 我对使用autoclosure和延迟操作感到困惑。我想知道如果从此示例中删除@autoclosure会发生什么。我知道然后需要花括号但除此之外?无处不在的解释是表达式只有在你调用之后才会被评估。但是当我们调用它时,每个函数都会被评估。所以如何autoclosure帮助它推迟。或者只是我们得到语法松弛,不需要在表达式周围放置花括号

1 个答案:

答案 0 :(得分:0)

  

或者只是我们得到语法松弛,不需要在表达式周围放置花括号

完全。它还隐藏来自调用者的延迟评估。 另一个例子是“短路”逻辑运算符||&&,例如

public static func ||(lhs: Bool, rhs: @autoclosure () throws -> Bool) rethrows -> Bool

所以在

let b = functionReturningBool() || otherFunctionReturningBool()

如果第一个函数已经返回,则不会调用第二个函数 true