我在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
是多少?
Edit:@auto_closure
更名为@autoclosure