我注意到在Swift中编写assert
时,第一个值的类型为
@autoclosure() -> Bool
使用重载方法返回泛型T
值,通过LogicValue
protocol
测试是否存在。
然而,严格地坚持手头的问题。它似乎需要一个返回Bool
的@autoclosure
。
编写一个不带参数并返回布尔值的实际闭包是不起作用的,它希望我调用闭包来编译它,如下所示:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
然而,简单地传递一个布尔值是有效的:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
那么到底是怎么回事呢?什么是@autoclosure
编辑: @auto_closure
已重命名为@autoclosure
https://stackoverflow.com/questions/24102617
复制相似问题