set! est l'opérateur d'affectation. Il permet d'affecter une nouvelle valeur à une cellule d'indirection.
La forme générale de set! est la suivante:
(set! <ref> [<valeur>])
Employer sans valeur, la cellule reçoit la valeur par défaut (nothing).
Le type du contenu est fixé dynamiquement. Cependant, en Abstrasy, le typage dynamique est fort. Cela signifie qu'il n'est pas possible d'affecter une cellule d'indirection avec une valeur d'un autre type que celle qui est déjà référencée.
(define '$a 0) (set! $a 10) (display "$a = " $a)
⇒
$a = 10
Il est toutefois possible de réinitialiser le typage dynamique fort d'une variable en lui affectant préalablement (nothing).
(define '$a "dix") (set! $a) # si aucune valeur n'est indiquée, $a reçoit (nothing). (set! $a 10) (display "$a = " $a)
⇒
$a = 10
Ceci est possible parce que (nothing) est un objet racine totalement indépendant du type. Ainsi, (nothing) peut remplacer n'importe quel objet et réinitialisé le typage du contenu. Pour plus d'informations à ce sujet, veuillez consultez la documentation du type nothing.
En outre, set! est une opération atomique. Elle est toujours réalisée de manière fiable même dans un environnement concurrent.
|
![]() |
|
||||||||