assert在Swift中编写时,我注意到第一个值键入为
@autoclosure() -> Bool
用重载的方法返回通用T值,并通过进行测试LogicValue protocol。
但是严格遵守眼前的问题。似乎要@autoclosure返回一个Bool。
编写不带任何参数并返回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
f({2 >1}())