Skyrim:Statement Reference
Ein Statement, eine Anweisung, ist ein Arrangement von Ausdrücken mit denen Arbeit durchgeführt wird (und kann ein einfacher Ausdruck sein). Es gibt auch einige kompliziertere Statements wie "if" und "while".
Inhaltsverzeichnis
Define-Statement
<define statement> ::= <type> <identifier> ['=' <expression>]
Ein Define-Statement definiert eine einzelne Variable und initialisiert sie optional mit einem Wert. Wenn kein Wert angegeben ist, beginnt sie mit dem voreingestellten Wert. Eine Variable, die in einem If- oder While-Block definiert ist, gerät nicht in Konflikt mit einer Variable, die in einem anderen If- oder While-Block definiert ist, der nicht Child oder Parent des definierenden Blocks ist.
Beispiele
<papyrusscript>
- Erzeugt eine Integer-Variable mit Namen var, die mit dem voreingestellten Wert 0 beginnt
int var
</papyrusscript>
<papyrusscript>
- Erzeugt eine Float-Variable mit Namen seconds, die mit dem angegebenen Wert beginnt
float seconds = CurrentTimeInMinutes() * 60.0f </papyrusscript>
Assign-Statement
<assign statement> ::= (<l-value> '=' <expression>) | (<l-value> '+=' <expression>) | (<l-value> '-=' <expression>) | (<l-value> '*=' <expression>) | (<l-value> '/=' <expression>) | (<l-value> '%=' <expression>) <l-value> ::= ([<expression> '.'] <identifier>) (<expression> '[' <expression> ']')
Ein Assign-Statement (oder Zuweisungs-Statement) berechnet das Ergebnis des Ausdrucks. Entweder wird das Ergebnis dem l-value zugewiesen oder der l-value wird mit dem Resultat modifiziert.
Beispiele
<papyrusscript>
- Zuweisung von 5 an x
x = 5
- Diese Zuweisung ist gleichbedeutend mit x = x + 5
x += 5
- Diese Zuweisung ist gleichbedeutend mit x = x * (5 + 5)
x *= 5 + 5
</papyrusscript>
<papyrusscript>
- Die Property wird mit dem berechneten Wert inkrementiert
MyObject.MyProperty += CoolFunction() * 10 </papyrusscript>
Return-Statement
'Return' [<expression>]
Das Return-Statement stoppt den Ablauf in der Funktion sofort, bestimmt das Ergebnis des Ausdrucks (wenn es einen gibt) und gibt ihn an den Aufrufer zurück. Der Typ des Ausdrucks im Return-Statement muss dem Typ des Rückgabewertes der Funktion entsprechen. Wenn die Funktion keinen Rückgabetypen hat, ist ein Return-Statement ohne Ausdruck zu verwenden. Wenn eine Funktion mit einem Return-Typen ohne ein Return-Statement beendet wird, wird None zurück gegeben (und es wird eine Warnung vom Spiel ausgedruckt, falls None nicht dem Return-Typen zugewiesen werden darf)
Beispiele
<papyrusscript>
- Unter der Annahmen dass der Return-Typ int ist, wird der Wert an den Aufrufer zurück gegeben.
Return 5
</papyrusscript>
<papyrusscript>
- Kehre sofort zurück, nichts wird zurück gegeben
Return x = 5 ; Dies läuft nie, da die Ausführung nach dem Return schon außerhalb der Funktion weiter geht. </papyrusscript>
If Statement
<if statement> ::= 'if' <expression> <statement>* ['elseif' <expression> <statement>*]* ['else' <statement>*] 'endIf'
Das If-Statement bestimmt den Wert seines Ausdruckes und arbeitet die Statements darunter bis zu einem "elseif", "else" oder "endif" ab, wenn er true ist. Wenn das Ergebnis des Ausdruckes false ist, wird runter gesprungen. Dabei wird ein folgendes "elseif" (sofern vorhanden) auf die gleiche Art ausgewertet und behandelt. Wird ein "else" gefunden, werden die folgenden Statements ausgeführt. Ein "endif" beendet den If-Block. An jedem gefundenen "elseif" wird dessen Ausdruck ausgewertet und falls er wahr ist, die Anweisungen darunter ausgeführt. Ist der Ausdruck false, wird zum nächsten "elseif", "else" oder "endIf" gesprungen.
Beispiele
<papyrusscript>
- Wenn value true ist, wird x auf 1 gesetzt, andernfalls passiert nichts.
if (value)
x = 1
endIf
</papyrusscript>
<papyrusscript>
- Wenn myCoolValue 20 ist, wird x auf 5 gesetzt, andernfalls wird x auf 10 gesetzt
if (myCoolValue == 20)
x = 5
else
x = 10
endIf
</papyrusscript>
<papyrusscript>
- Wenn value größer als 10 ist, wird x auf 1 gesetzt, to 1, wenn es kleiner als 10 ist wird x auf -1 gesetzt, andernfalls wird x auf 0 gesetzt.
if (value > 10)
x = 1
elseif (value < 10)
x = -1
else
x = 0
endIf </papyrusscript>
While Statement
'while' <expression> <statement>* 'endWhile'
Das While-Statement ist eine Schleife, die die Anweisungen innerhalb solange wiederholt, bis der Ausdruck false ist.
Beispiele
<papyrusscript>
- Schleife bis x 10 ist
x = 0 while (x < 10)
DoCoolStuff() x += 1
endWhile </papyrusscript>
Links
- Statement Reference (das englische Original des obigen Artikels)