Al escribir un assertmensaje en Swift, noté que el primer valor se escribe como
@autoclosure() -> Bool
con un método sobrecargado para devolver un Tvalor 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 @autoclosureque 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}())