Brug af variabler
Vi kan opbevare forskellige former for data i computerens hukommelse ved hjælp af variabler. Man kan forestille sig en skuffe, som man sætter en seddel på med en kort beskrivelse af indholdet. Når man så skal finde indholdet frem igen eller putte noget nyt indhold i, finder man blot skuffen med den rette seddel frem. Variabler fungerer lidt på samme måde: Når man opretter en variabel, gemmer man et objekt under et bestemt navn. Når man så senere skal bruge objektet igen, henviser man blot til variablens navn. Og nu vi er ved variabelnavne: De starter altid med et lille begyndelsesbogstav1. Hvis vi prøver at bruge variabelnavnet ~Kaffe
, vil vi derfor få en fejlmeddelelse. Brug i stedet ~kaffe
.
Globale variabler
Der er to typer variabler: Globale og lokale variabler. Globale variabler kan anvendes (næsten) overalt i et SuperCollider-program. De noteres med tegnet tilde (~
), direkte efterfulgt af et passende navn.
~trin;
~akkord;
// Alle enkeltbogstaver fra a til z udgør også globale variabler:
a;
b;
For at bruge variabler skal vi kunne tilgå og definere deres indhold.
- For at tilgå variablen, dvs. finde dens indhold frem og bruge det til noget, bruger vi slet og ret variabelnavnet, fx
~trin
. - For at definere eller ændre variablens indhold, bruger vi først variabelnavnet efterfulgt af et lighedstegn, og det nye indhold på højre side af lighedstegnet:
~trin = 2
. Dette kaldes også assignment, fordi vi i dette tilfælde "assigner" tallet 2 til variable med navnet~trin
.
~trin.postln; // tjek først variablens indhold
~trin = 5; // gem et tal
~trin.postln; // tjek variablens indhold igen
//Vi kan efterfølgende tilgå og bruge variablens indhold blot ved at bruge dens navn:
~trin - 10;
En variabel kan efterfølgende let omdefineres ved at foretage en ny assignment.
// Vi kan også omdefinere indholdet med endnu en assignment:
~trin = 50;
~trin.postln;
// Variablens nuværende indhold kan anvendes, når man regner en ny værdi ud og gemmer under samme variabelnavn:
~trin = ~trin * 10 + 7;
~trin.postln;
Der findes en mindre teknisk forskel på variabler som ~trin
og t
, men på begynderniveau er det ikke nødvendigt at skelne mellem de to2.
Lokale variabler
Vi bruger blandt andet lokale variabler til at gemme data som akkorder og rytmer, men også til at definere signalflowet, når vi designer lyde.
Lokale variabler defineres med nøgleordet var
i stedet for ~
. De kan udelukkende tilgås inden for en afgrænset kodeblok bestående af almindelige parenteser eller tuborg-parenteser, og de skal oprettes i begyndelsen af den kodeblok, de tilhører.
(
var akkord = [0, 1, 4];
akkord.postln;
// Inden for kodeblokken: viser variablens indhold
)
akkord.postln;
// Uden for kodeblokken: giver en fejlmeddelelse
-
Teknisk set skal variabler begynde med småt begyndelsesbogstav, fordi stort begyndelsesbogstav er forbeholdt de såkaldte klassenavne. ↩
-
Rent teknisk udgør variabler som
~kaffe
og~the
såkaldte environment variables, hvor variabler soma
,b
ogc
er globale variabler i mere klassisk forstand. Med environment variables kan man skifte mellem environments og dermed adskille det man i mere avanceret programmering kalder for namespaces. Som begynder skal man ikke bekymre sig om dette, da vi på grundlæggende niveau udelukkende arbejder inden for ét environment. Vi kan dermed for enkelhedens skyld betragte environment variables som globale variabler. ↩