ls:let
ls:let variable-name value
Creates a variable containing the given data that can be accessed by the child models.
ask turtles [
ls:let my-color color
ls:ask my-model [
ask turtles [ set color my-color ]
]
]
ls:let
works quite similar to let
in that the variable is only locally accessible:
ask turtles [
ls:let my-color color
]
;; my-color is innaccessible here
ls:let
is very similar to let
, except in a few cases.
ls:let
will overwrite previous values in the variable
If you do
ls:let my-var 5
ls:let my-var 6
my-var
will be set equal to 6
. There is no ls:set
.
ls:let
supports variable shadowing
If you do
ls:let my-var 5
ask turtles [
ls:let my-var 6
ls:ask child-model [ show my-var ]
]
ls:ask child-model [ show my-var ]
child-model
will show 6
and then 5
. This is known as variable shadowing.
- The parent model cannot directly read the value of an ls variable
For example, this does not work.
ls:let my-var 5
show my-var
This is intentional. ls variables are meant to be used for sharing data with child models. The parent model already has access to the data.
Furthermore, changing the value of an ls let variable in a child model will not affect it in any other model. For example:
ls:let my-var 0
ls:ask ls:models [
set my-var my-var + 1
show my-var
]
All models will print 1
.
Take me to the full LevelSpace Extension Dictionary