Environments#
An Environments is a collection of things that can be accessed by name. When we start the SuperCollider IDE, it automatically creates an environment that can be evaluated by the following line:
currentEnvironment;
If this is your first evaluated command, the environment should be empty. This environment contains variables, more specifically all environment variables. A variable starting with a tilde is a environment variable, e.g.:
~number = 100;
If we re-evaluate the first statement, we can observe that currentEnvironment
contains the value 100
and this value can be accessed via the name number
.
In fact ~number
is a shortcut for
currentEnvironment.at(\number);
and an assignment like ~number = 100;
stands for
currentEnvironment.put(\number, 100);
We can create a fresh environment and push it onto the stack of environments. In fact, that is more or less what happens when we call a function.
Let us create an environment by using a global variable d
.
Then we push it onto the stack.
Additional, let us create a new environment variable for the environment d
.
d = ()
d.push;
~number = 233;
If we re-evaluate
currentEnvironment
we can see the new variable. Note that even the names of these two variables are the same, they live in different environments. If we call
d.pop;
we remove d
from the stack and currentEnvironment
is equal to the environment before we pushed d
onto the stack.
~number
is now equals 100
.