let! est un opérateur d'affectation. Il fournit le même résultat que set! mais en retournant directement la valeur affectée.
La forme générale de let! est la suivante:
(let! <ref> [<valeur>])
Employer sans valeur, comme dans le cas de set!, la cellule reçoit la valeur par défaut (nothing). Mais cette valeur est directement retournée par l'opérateur.
(define '$x 10) (display (let! $x))
⇒
(nothing)
Si une valeur est indiquée, la cellule ref reçoit la valeur, mais cette valeur est également retournée. Ceci est très intéressant dans le cadre de l'utilisation de boucles.
(define '$x 10) (define '$i) (while{let! $i (fetch-and-decr! $x)} {display $i})
⇒
10 9 8 7 6 5 4 3 2 1
On peut donc affecter une variable tout en testant une condition relative à sa valeur dans un style plus concis.
De plus, let! est un opérateur atomique, il peut être utilisé d'une manière sûre dans un contexte concurrent.
|
![]() |
|
||||||||