Skyrim:Variable Reference: Unterschied zwischen den Versionen

Aus Skript-Wiki
Wechseln zu: Navigation, Suche
K (Die Seite wurde neu angelegt: ==Links== {{Übersetzung|ckwiki|Variable Reference}} Variable Reference Variable Reference [[Category:Papyrus Spra...)
 
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]]
[[Category:Unvollständige_Artikel| Variable Reference]]
 

Version vom 15. Juli 2012, 11: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.

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