Notei ao escrever um assert
em Swift que o primeiro valor é digitado como
@autoclosure() -> Bool
com um método sobrecarregado para retornar um T
valor genérico , para testar a existência via LogicValue
protocol
.
No entanto, mantendo estritamente a questão em questão. Parece querer um @autoclosure
que retorne a Bool
.
Escrever um fechamento real que não aceita parâmetros e retorna um Bool não funciona, ele quer que eu chame o fechamento para compilá-lo, assim:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
No entanto, simplesmente passar um Bool funciona:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Então, o que está acontecendo? O que é @autoclosure
?
Editar: @auto_closure
foi renomeado@autoclosure
f({2 >1}())