Skyrim:Variable Reference

Aus Skript-Wiki
Wechseln zu: Navigation, Suche

Eine Variable ist Speicher für einen einzelnen Wert in Papyrus. Abhängig vom Typ kann es ein Wert oder eine Referenz auf einen Wert sein. Variablen können im Script definiert sein oder innerhalb einer bestimmten Funktion oder einem Block.

Definieren von Variablen

Im Script:

<variable definition> ::= <type> <identifier> ['=' <constant>] (<flags>)*

In einer Funktion:

<variable definition> ::= <type> <identifier> ['=' <expression>]

Variablen werden einfach definiert, indem der Typ geschrieben wird, gefolgt vom Identifier , mit dem die Variable genutzt wird.

Man kann optional ein Gleichheitszeichen folgen lassen, dem ein Ausdruck folgt (in einer Funktion) oder ein Wert (in einem Script), um die variable mit diesem Wert in der selben Zeile zu initialisieren. Wenn man keinen Wert bei der Initialisierung angibt, hat die Variable ihren definierten Anfangswert. Wenn eine Variable außerhalb einer Funktion oder eines Events deklariert wird, kann sie nur als Literal initialisiert werden. Innerhalb einer Funktion oder eines Events können Ausdrücke in der Initialisierung der Variablen genutzt werden.

Variablen in Scripts müssen vor Gebrauch nicht definiert werden, Variablen innerhalb von Funktionen jedoch schon. Variablen, die in Scripts definiert sind, können Flags haben.

Der Identifier muss innerhalb des Blocks, in den er definiert ist, eindeutig sein. D.h. wenn man im Script eine Variable mit Namen "foo" hat, darf keine der Funktionen eine lokale Variable mit Namen "foo" definiert haben. Wenn jedoch eine Funktion eine Variable mit Namen "foo" hat, darf eine andere Funktion im selben Script ebenfalls eine Variable mit Namen "foo" haben. Variablen, die innerhalb eines Blocks (wie ein "if" oder "while") definiert sind, sind für diesen Block lokale Variablen.


Beispiele

<papyrusscript>

Definiert eine "foo" genannte Variable, die ein integer ist

int foo </papyrusscript>
<papyrusscript>

Definiert eine "bar" genannte Variable, die mit einem Wert von 10.5 mal x beginnt
(muss in einer Funktion sein)

float bar = 10.5 * x </papyrusscript>
<papyrusscript>

Definiert zwei Variablen, beide „foo“ genannt die , die verschieden voneinander sind

if x

 int foo = 10

else

 float foo = 10.5

endIf

auf foo kann außerhalb nicht zugegriffen werden!

foo = 10 ; Fehler beim Übersetzen </papyrusscript>

Value Variablen

Variablen, die vom Typ int, float, bool, oder string sind, werden „Value Variablen“ genannt. Diese Variablen speichern einfach einen Wert und wenn man auf sie an andere zuweist oder sie einer Funktion übergibt, kopieren sie ihren Wert

Beispiele

<papyrusscript> x = 5 y = x ; Kopiert den Wert von x und gibt ihn an y y = 6 ; Ändert den Wert von y zu 6, was aber keinen Einfluss auf x hat,

     ; die immer noch 5 ist 

</papyrusscript>

Object Variaben

Variablen, die Objekte oder Arrays sind, werden „Object Variablen“ genannt. Diese Variablen zeigen auf einen Wert anstatt ihn zu speichern. Wenn man auf sie an eine andere zuweist, zeigen beide auf den selben Wert und Änderungen, die an einer gemacht werden, spiegeln sich in der anderen wider

Beispiele

<papyrusscript> x = MyObject x.SetCoolValue(5) ; Setzt den „cool value“ des Objektes, auf das x zeigt, auf 5 y = x ; Y zeigt nun auch auf MyObject y.SetCoolValue(10) ; Setzt den „cool value“ des Objektes,

                  ; auf das sowohl x als auch y zeigen, auf 10

a = x.GetCoolValue() ; gibt 10 zurück! b = y.GetCoolValue() ; gibt ebenfalls 10 zurück! </papyrusscript>


Links