Pisząc assert
w Swift zauważyłem, że pierwsza wartość jest wpisana jako
@autoclosure() -> Bool
z przeciążoną metodą w celu zwrócenia T
wartości ogólnej , aby przetestować istnienie za pośrednictwem LogicValue
protocol
.
Jednak trzymając się ściśle pytania. Wygląda na to, @autoclosure
że chce otrzymać, który zwraca a Bool
.
Pisanie rzeczywistego zamknięcia, które nie przyjmuje parametrów i zwraca Bool, nie działa, chce, żebym wywołał zamknięcie, aby je skompilować, na przykład:
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Jednak proste przekazanie Bool działa:
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Więc, co się dzieje? Co to jest @autoclosure
?
Edycja: @auto_closure
została zmieniona@autoclosure
f({2 >1}())