scripting:tutorials:level1:variables
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
scripting:tutorials:level1:variables [2023/05/09 17:44] – angelegt fritz_98 | scripting:tutorials:level1:variables [2024/05/13 13:03] (aktuell) – fritz_98 | ||
---|---|---|---|
Zeile 30: | Zeile 30: | ||
-- Kommentare werden in Lua mit -- eingeleitet | -- Kommentare werden in Lua mit -- eingeleitet | ||
</ | </ | ||
+ | |||
+ | **Wichtig**: | ||
+ | |||
+ | | **and** | ||
+ | | **for** | ||
+ | | **or** | ||
**Wichtig**: | **Wichtig**: | ||
Zeile 36: | Zeile 42: | ||
- Speichere diesen Wert unter dem Namen, der auf der linken Seite steht, ab | - Speichere diesen Wert unter dem Namen, der auf der linken Seite steht, ab | ||
Dementsprechend müssen die Werte, die jeweils links und rechts vom = stehen, nicht notwendigerweise gleich sein. Dies wird offensichtlich, | Dementsprechend müssen die Werte, die jeweils links und rechts vom = stehen, nicht notwendigerweise gleich sein. Dies wird offensichtlich, | ||
+ | |||
+ | ---- | ||
+ | |||
+ | **Hinweis**: | ||
+ | |||
+ | [[ https:// | ||
+ | |||
+ | Um dabei bei der Ausgabe ein Ergebnis zu sehen, kann man '' | ||
+ | <code lua> | ||
+ | Result = 42 | ||
+ | print(Result) | ||
+ | </ | ||
+ | schreiben. Wenn die Variable einen anderen Namen hat, muss man diesen dementsprechend austauschen. | ||
---- | ---- | ||
Zeile 53: | Zeile 72: | ||
| **^** | Exponentiation | <code lua> Result = 3.4761^3 </ | | **^** | Exponentiation | <code lua> Result = 3.4761^3 </ | ||
| **-** | Negation (einzelner Wert) | <code lua> Result = - (- 42) </ | | **-** | Negation (einzelner Wert) | <code lua> Result = - (- 42) </ | ||
- | Im letzten Beispiel haben wir noch Klammern eingesetzt, um die Berechnungsreihenfolge festzulegen. Ohne Klammerung gilt Punkt vor Strich (bzw. Exponentiation hat die höchste Priorität von allen). Für einige weitere mathematische Operationen siehe die math-Übersicht | + | Im letzten Beispiel haben wir noch Klammern eingesetzt, um die Berechnungsreihenfolge festzulegen. Ohne Klammerung gilt Punkt vor Strich (bzw. Exponentiation hat die höchste Priorität von allen). Für einige weitere mathematische Operationen siehe die [[ scripting: |
Wenn man mehr als eine Variable hat, kann man diese auch untereinander verrechnen: | Wenn man mehr als eine Variable hat, kann man diese auch untereinander verrechnen: | ||
Zeile 98: | Zeile 117: | ||
</ | </ | ||
- | FIXME TODO: Zeichen, die nicht erlaubt sind und escaped werden | + | Es gibt einige |
+ | <code lua> | ||
+ | -- Wir haben hier den Text in zwei Zeilen geschrieben und mit .. miteinander verbunden, um | ||
+ | -- horizontales Scrollen zu vermeiden. Dies sorgt in Skripten für bessere Übersicht | ||
+ | DrEvil = "Back in the sixties I developed a weather changing machine which was, in essence, ".. | ||
+ | " | ||
+ | </ | ||
+ | Ein anderes Zeichen, das in Strings nicht einfach verwendet werden kann, ist als Resultat der Backslash. Ein einzelner Backslash muss daher mit zwei Backslashes definiert werden. Das ist vor allem bei der Angabe von Dateipfaden wichtig: | ||
+ | <code lua> | ||
+ | Path = " | ||
+ | </ | ||
---- | ---- | ||
===== Booleans ===== | ===== Booleans ===== | ||
+ | |||
+ | Booleans können nur einen von zwei verschiedenen Werten annehmen: Wahr (**true**) oder Falsch (**false**). Damit wird der Wahrheitsgehalt einer Aussage ausgedrückt. [[ scripting: | ||
+ | <code lua> | ||
+ | CatsAreCute = true | ||
+ | FeathersAreHeavy = false | ||
+ | </ | ||
+ | |||
+ | ==== Logische Operatoren ==== | ||
+ | |||
+ | Mit booleans kann man auch " | ||
+ | |||
+ | Und (**and**) prüft, ob zwei verschiedene Booleans beide wahr sind. | ||
+ | <code lua> | ||
+ | Result = Boolean1 and Boolean2 | ||
+ | </ | ||
+ | ^ and ^^^ | ||
+ | ^ Boolean1 ^ Boolean2 ^ Result ^ | ||
+ | | false | false | false | | ||
+ | | false | true | false | | ||
+ | | true | false | false | | ||
+ | | true | true | true | | ||
+ | |||
+ | Oder (**or**) prüft, ob von zwei verschiedenen Booleans mindestens einer wahr ist. | ||
+ | <code lua> | ||
+ | Result = Boolean1 or Boolean2 | ||
+ | </ | ||
+ | ^ or ^^^ | ||
+ | ^ Boolean1 ^ Boolean2 ^ Result ^ | ||
+ | | false | false | false | | ||
+ | | false | true | true | | ||
+ | | true | false | true | | ||
+ | | true | true | true | | ||
+ | |||
+ | Nicht (**not**) kehrt den Wert eines Booleans um. | ||
+ | <code lua> | ||
+ | Result = not Boolean1 | ||
+ | </ | ||
+ | ^ not ^^ | ||
+ | ^ Boolean1 ^ Result ^ | ||
+ | | false | true | | ||
+ | | true | false | | ||
+ | |||
+ | ==== Vergleichsoperatoren ==== | ||
+ | |||
+ | Sowohl Zahlen als auch Strings können miteinander verglichen werden, was ebenfalls in Booleans resultiert. Ein einfaches Beispiel ist hierbei die Frage, ob eine Zahl größer als eine andere ist: | ||
+ | <code lua> | ||
+ | Test = Number1 > Number2 | ||
+ | </ | ||
+ | |||
+ | Etwas ungewohnter ist die Frage, ob ein Text " | ||
+ | <code lua> | ||
+ | Test = " | ||
+ | </ | ||
+ | |||
+ | Eine vollständige Liste aller Vergleichsoperatoren findest du hier: | ||
+ | |||
+ | ^ Operator ^ Bedeutung ^ Beispiel ^ | ||
+ | | < | a kleiner b? | <code lua> Test = a < b </ | ||
+ | | > | a größer b? | <code lua> Test = a > b </ | ||
+ | | < | ||
+ | | >= | a größer oder gleich b? | <code lua> Test = a >= b </ | ||
+ | | == | a gleich b? | <code lua> Test = a == b </ | ||
+ | | ~= | a ungleich b? | <code lua> Test = a ~= b </ | ||
+ | |||
+ | Besonderes Augenmerk sei darauf gerichtet, dass die Frage nach Gleichheit mit **zwei** ==-Zeichen geschieht, da ein einzelnes =-Zeichen bereits für die Zuweisung reserviert ist. | ||
+ | |||
+ | Wenn du Variablen unterschiedlicher Datentypen miteinander vergleichst, | ||
+ | - Ein Fehler. < | ||
+ | - **false**. < | ||
+ | Achte deshalb immer darauf, dass deine Variablen vom richtigen Typ sind. | ||
+ | |||
+ | ==== Berechnungsreihenfolge ==== | ||
+ | |||
+ | Diese logischen Operatoren haben ebenfalls eine "Punkt vor Strich" | ||
+ | - Exponentiation | ||
+ | - **not** und Zahlennegation | ||
+ | - Punktrechnung | ||
+ | - Strichrechnung | ||
+ | - Stringkonkatenation | ||
+ | - Vergleichesoperatoren | ||
+ | - **and** | ||
+ | - **or** | ||
+ | Wobei höhere Priorität bedeutet, dass ein Operator vor einem anderen mit niedrigerer Priorität ausgeführt wird. Andere Reihenfolgen lassen sich ebenfalls mit Klammerung umsetzen: | ||
+ | <code lua> | ||
+ | Boolean1 = true | ||
+ | Boolean2 = false | ||
+ | Number1 = 5 | ||
+ | Number2 = 8 | ||
+ | Number3 = 13 | ||
+ | Result1 = not Boolean1 and Boolean2 or Number3 > Number1*Number2 | ||
+ | Result2 = ((not Boolean1) and Boolean2) or (Number3 > (Number1*Number2)) | ||
+ | Result3 = not (Boolean1 and Boolean2) or (Number3 > (Number1*Number2)) | ||
+ | |||
+ | -- Test1 ist wahr, da Result2 so geklammert ist, wie es ohnehin ausgerechnet werden würde | ||
+ | Test1 = Result1 == Result2 | ||
+ | -- Test2 ist falsch, da die Klammerung bei Result3 für ein anderes Ergebnis sorgt | ||
+ | Test2 = Result1 == Result3 | ||
+ | </ | ||
+ | |||
+ | **Achtung**: | ||
+ | <code lua> | ||
+ | Test = not 5 > 7 | ||
+ | </ | ||
+ | Ohne Klammerung wird hier zuerst **not** 5 ausgewertet, | ||
+ | <code lua> | ||
+ | Test = not (5 > 7) | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Nil ===== | ||
+ | |||
+ | Ein weiterer Datentyp ist **nil**. Der Zweck dieses Datentyps ist einzig und allein, sich von allen anderen Datentypen zu unterscheiden und wird in der Regel benutzt, wenn keine sinnvollen Daten angegeben werden können: | ||
+ | <code lua> | ||
+ | Unicorns = nil | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Tables und Funktionen ===== | ||
+ | |||
+ | Der Vollständigkeit halber bleibt zu erwähnen, dass auch [[ scripting: | ||
+ | |||
+ | ---- | ||
+ | |||
+ | Im nächsten Kapitel beschreiben wir, wie Programmcode nur unter bestimmten Bedingungen ausgeführt wird. | ||
+ | |||
+ | [[ scripting: | ||
+ | [[ scripting: | ||
+ | [[ scripting: |
scripting/tutorials/level1/variables.1683654270.txt.gz · Zuletzt geändert: 2023/05/09 17:44 von fritz_98