Ho notato quando scrivevo assert
in Swift che il primo valore è digitato come
@autoclosure() -> Bool
con un metodo sovraccarico per restituire un T
valore generico , per testare l'esistenza tramite LogicValue
protocol
.
Tuttavia, attenendosi rigorosamente alla domanda in questione. Sembra voler un @autoclosure
che 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}())