【发布时间】:2014-07-28 22:49:15
【问题描述】:
我注意到在 Swift 中编写 assert 时,第一个值的类型为
@autoclosure() -> Bool
使用重载方法返回泛型T 值,以通过LogicValue protocol 测试存在。
但严格按照手头的问题。它似乎想要一个返回 Bool 的 @autoclosure。
编写一个不带参数并返回 Bool 的实际闭包不起作用,它希望我调用闭包以使其编译,如下所示:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
但是简单地传递一个 Bool 就可以了:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
那么发生了什么?什么是@autoclosure?
编辑: @auto_closure 更名为 @autoclosure
【问题讨论】: