Al escribir un assert
mensaje en Swift, noté que el primer valor se escribe como
@autoclosure() -> Bool
con un método sobrecargado para devolver un T
valor genérico , para probar la existencia a través de LogicValue
protocol
.
Sin embargo, apegarse estrictamente a la pregunta en cuestión. Parece querer un @autoclosure
que devuelve unBool
.
Escribir un cierre real que no toma parámetros y devuelve un Bool no funciona, quiere que llame al cierre para que se compile, así:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Sin embargo, simplemente pasar un Bool funciona:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
¿Entonces qué está pasando? Que es@autoclosure
?
Editar: @auto_closure
fue renombrado@autoclosure
f({2 >1}())