Variablen
Variablen dienen innerhalb von Scripts zur Speicherung von Daten. Es gibt bestimmte Datentypen, die Variablen annehmen können.
Außerdem kann eine Variable einen von drei Gültigkeitsbereiche haben.
Schlüsselwort | Gültigkeitsbereich | Standort |
var |
funktions-lokal | Funktion |
local |
objekt-lokal | Objektscript |
static |
global | beliebiger Skript |
Variablen werden mit folgender Syntax definiert:
{ var / local / static } name [= expr] [, name [= expr] ... ];
Als erstes wird der Gültigkeitbereich angegeben. Danach muss der Name einer benannten Variable folgen.
Optional kann der Variable auch gleich ein Wert zugewiesen werden. Dies funktioniert allerdings nicht für
static
Variablen. Ohne Initialisierung enthält die Variable anfangs nil
.Weitere Deklarationen können, mit Kommata getrennt, folgen. Die Deklaration muss immer mit einem ";" beendet werden.
Beispiel:
static object_count; local time_to_live = 100; protected func Initialize() { object_count++; } protected func Destruction() { object_count--; } protected func Timer() { if(!--time_to_live) { RemoveObject(); return; } var obj = FindObject(Find_ID(Clonk), Sort_Distance()); if(ObjectDistance(obj) < 20) DoDamage(-10, obj); return; }
Ergänzungen:
- Definitionen objektlokaler Variablen werden sowohl bei #appendto also auch bei #include mit übernommen.
- Wenn
this
eine Definition ist, sind lokale Variablen konstant. Dies schützt vor versehentlichen Änderungen die nur funktionieren wenn es nur ein Objekt der Definition gibt, aber auf subtile Weise schief gehen sobald es mehrere gibt. - Mit
obj.foo
oderobj["foo"]
kann auf lokale Variablen anderer Objekte zugegriffen werden. - Sind an einer Stelle zwei Variablen desselben Namens sichtbar, so bezeichnet der Name im Script jeweils die Variable mit dem kleineren Geltungsbereich. Das heißt z.B., dass eine objektlokale Variable eine globale Variable "verdeckt".
- Wird eine Variable mehrfach deklariert, so existiert die Variable trotzdem nur einmal und es wird kein Fehler ausgegeben. Initialisierungen gelten als Zuweisungen und werden wie eine entsprechende Anweisung gegebenenfalls auch mehrfach ausgeführt.
- Eine
static
-Variable darf auch in Objektscripten verwendet werden (siehe Beispiel). Wird einestatic
-Variable mit gleichem Namen in einem anderen Script definiert, so bezeichnen beide auch dieselbe Variable.