Lokale Variable – Mappedia

Lokale Variable

Aus Mappedia
Wechseln zu: Navigation, Suche

Eine lokale Variable ist eine Variable, die nur innerhalb der Funktion gültig ist, in der sie deklariert wurde. Die Deklaration einer lokalen Variable wird eingeleitet durch das Wort "local", danach kommt der Variablentyp, dann der Variablenname. Bei lokalen Arrays kommt zwischen Variablentyp und Variablenname noch das Wort "array".

Beispiel

function foo takes integer a, integer b returns integer
   local integer result
   local integer array sinnlos
   set result = a + b    
   return result
endfunction

lokale Variablen im GUI

Im GUI gibt es eigentlich keine lokalen Variablen. Man kann jedoch durch Überlagerung einen ähnlichen Effekt erzielen. Dieses Verfahren funktioniert allerdings seit dem Warcraft III Patch 1.24 nicht mehr. Man erstellt dazu die benötigte Variable zuerst im Variablen-Editor als Globale Variable. Diese Globale Variable kann man nun in einem Trigger wie eine lokale Variable behandeln, indem man eine Zeile Custom-Text zu Beginn des Triggers einfügt.

Custom script: local variablen_typ udg_variablen_name

Wichtig ist das "udg_" vor dem Namen der Variable. Außerdem sollte man bedenken, dass eine lokale Variable nur innerhalb einer Funktion gültig ist, ein Trigger jedoch aus mehreren Funktionen bestehen kann. Lokale Variablen können nicht verwendet werden, innerhalb von:

Es kann jedoch pro Funktion nur eine globale Variable überlagert werden. Sobald mehrere überlagert werden, verursacht das einen schwerwiegenden Bug: Alle überlagerten lokalen Variablen haben dann dieselbe Speicherposition (was nur in den seltensten fällen gewünscht ist). Sobald man also mehr als eine lokale Variable braucht muss man "echte", nicht überlagerte lokale Variablen benutzen.


Beispiel

revive
Ereignisse
Einheit - A unit Stirbt
Bedingungen
(Owner of (Dying unit)) Gleich Neutral feindlich
Aktionen
Custom script: local location udg_temp_location
Set temp_location = (Position of (Dying unit))
Wait 60.00 seconds
Einheit - Create 1 Peasant for Neutral feindlich at temp_location facing 0.00 degrees
Meine Werkzeuge
Namensräume
Varianten
Aktionen
Navigation
Warcraft-Mapping
Werkzeuge