Ho notato quando scrivevo assertin Swift che il primo valore è digitato come
@autoclosure() -> Bool
con un metodo sovraccarico per restituire un Tvalore generico , per testare l'esistenza tramite LogicValue protocol.
Tuttavia, attenendosi rigorosamente alla domanda in questione. Sembra voler un @autoclosureche ritorna a Bool.
Scrivere una chiusura effettiva che non accetta parametri e restituisce un Bool non funziona, vuole che io chiami la chiusura per farlo compilare, in questo modo:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Tuttavia, semplicemente passando un Bool funziona:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Quindi che sta succedendo? Che cosa è @autoclosure?
Modifica: è @auto_closure stato rinominato@autoclosure
f({2 >1}())