Skyrim:Variable Reference: Unterschied zwischen den Versionen
Keris (Diskussion | Beiträge) K (Die Seite wurde neu angelegt: ==Links== {{Übersetzung|ckwiki|Variable Reference}} Variable Reference Variable Reference [[Category:Papyrus Spra...) |
Keris (Diskussion | Beiträge) K |
||
Zeile 1: | Zeile 1: | ||
+ | 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 [[sk:Script File Structure|Script]] definiert sein oder innerhalb einer bestimmten [[sk:Function Reference|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 [[sk:Identifier Reference|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 [[sk:Default Value Reference|Anfangswert]]. | ||
+ | Wenn eine Variable außerhalb einer Funktion oder eines Events deklariert wird, kann sie nur als [[sk:Literals_Reference|Literal]] initialisiert werden. Innerhalb einer Funktion oder eines Events können [[sk:Expression_Reference|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 [[sk:Flag Reference|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 === | ||
+ | <tesscript> | ||
+ | ; Definiert eine "foo" genannte Variable, die ein integer ist | ||
+ | int foo | ||
+ | </tesscript> | ||
+ | <br> | ||
+ | <tesscript> | ||
+ | ; 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 | ||
+ | </tesscript> | ||
+ | <br> | ||
+ | <tesscript> | ||
+ | ; 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 | ||
+ | </tesscript> | ||
+ | |||
+ | == 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 === | ||
+ | <tesscript> | ||
+ | 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 | ||
+ | </tesscript> | ||
+ | |||
+ | == 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 === | ||
+ | <tesscript> | ||
+ | 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! | ||
+ | </tesscript> | ||
+ | |||
+ | |||
==Links== | ==Links== | ||
{{Übersetzung|ckwiki|Variable Reference}} | {{Übersetzung|ckwiki|Variable Reference}} | ||
Zeile 5: | Zeile 73: | ||
[[Category:Scripting Wissen| Variable Reference]] | [[Category:Scripting Wissen| Variable Reference]] | ||
[[Category:Papyrus Sprachreferenzen| Variable Reference]] | [[Category:Papyrus Sprachreferenzen| Variable Reference]] | ||
− |
Version vom 15. Juli 2012, 10:48 Uhr
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.
Inhaltsverzeichnis
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
<tesscript>
- Definiert eine "foo" genannte Variable, die ein integer ist
int foo
</tesscript>
<tesscript>
- 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
</tesscript>
<tesscript>
- 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 </tesscript>
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
<tesscript> 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
</tesscript>
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
<tesscript> 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! </tesscript>
Links
- Variable Reference (das englische Original des obigen Artikels)