J'ai remarqué en écrivant un assert
dans Swift que la première valeur est typée en tant que
@autoclosure() -> Bool
avec une méthode surchargée pour renvoyer une méthode générique T
pour en tester l'existence via la valeur LogicValue
protocol
.
Cependant, si l'on s'en tient strictement à la question qui nous occupe. Il semble vouloir un @autoclosure
qui renvoie un Bool
.
L'écriture d'une fermeture réelle qui ne prend pas de paramètres et renvoie un Bool ne fonctionne pas, elle veut que j'appelle la fermeture pour la faire compiler, comme ceci :
assert({() -> Bool in return false}(), "No user has been set", file: __FILE__, line: __LINE__)
Cependant, le simple fait de passer un Bool fonctionne :
assert(false, "No user has been set", file: __FILE__, line: __LINE__)
Alors, qu'est-ce qui se passe ? Qu'est-ce que @autoclosure
?
Editar: @auto_closure
a été renommé @autoclosure