Understanding context
La notion de contexte dans Netlogo se rapproche du concept de portée en informatique générale.
La portée d'une variable (scope en anglais) est l'étendue au sein de laquelle une variable est accessible.
Si une variable est créé dans un contexte local, elle doit d'abord être initialisé avec let. Si elle est accédé par la suite, alors on utilisera cette fois-ci le mot-clef set
En Netlogo, il s'agit d'une portée dite lexicale (lexically scoped). Celle-ci implique que les variables définies dans un bloc ne sont valable que dans ce bloc.

La variable mycolor est accessible depuis le bloc _ask_imbriqué.

Les variables mycolor et mycolor2 sont accessibles depuis le bloc ask qui interagit avec les patches.
let mycolor blue #1
ask turtles [
set color mycolor
set size random 3
let mycolor2 mycolor - 2 #2
ask patch-here [
set pcolor mycolor + mycolor2 #3
]
]
Il est possible de se servir de cette imbrication de contexte dans les deux sens, par exemple si vous avez besoin de récupérer des valeurs depuis un contexte imbriqué. Par exemple pour mettre à jour une valeur ou construire une liste.
turtles-own [ on-white? count-colors ]
ask patches [
set pcolor first shuffle [green orange blue white]
]
let total-of-red 0
ask turtles [
ask patch-here [
(ifelse
pcolor = white [
set on-white? true
set count-colors lput [pcolor] of neighbors
]
pcolor = red [
set total-of-red total-of-red + 1
]
)
]
]
Parfois cette syntaxe peut être simplifié en faisant appel à of, mais seulement lorsqu'il s'agit de questionner un atribut et non pas d'écrire dans celui-ci.
let mycolor blue #1
ask turtles [
set color mycolor
set size random 3
let mycolor2 mycolor - 2 #2
ask patch-here [
set pcolor mycolor + mycolor2 #3
]
]
Les commandes (turtle-set _<value1> <value 2> <..._>) et patch-set <value1> <value2> <...> peuvent être utilisé pour créer manuellement des AgentSet