Datentypen

Datentypen beschreibt alle Formen von Daten, die du mit Lua verarbeiten kannst. Dabei musst du nicht peinlich genau auf Kompatibilität achten wie in anderen Programmiersprachen, dennoch gibt es einige Dinge die du beachten musst, wenn kein Murks am Ende rauskommen soll.

Boolsche Variablen

In Lua gibt es 3 boolsche Variablen. Aufzuzählen sind true (logisch wahr), false (logisch falsch) und nil(nicht wahr und nicht falsch). Streng genommen sind nur die ersten beiden richtige Bools, dennoch möchte ich nil mit dazuzählen.

true und false sind die Ergebnisse von Vergleichsoperationen. nil ist der Wert für nicht existierende Werte. Alle 3 können aber auch einfach so einer Variable zugewiesen werden.

DasIstFalsch  = false
DasIstWahr    = true
DasGibtsNicht = nil

Wenn du den Typ einer Variable bestimmst, bekommst du als Rückgabe "boolean".

Integer und Float

Anders als in anderen Programmiersprachen macht Lua keinen Unterschied zwischen Ganzzahlen (Integer) und Gleitkommazahlen. Sie lassen sich problemlos miteinander addieren, ohne einen Datenverlust. Leider kommt es (wie es die Gleitkommaarithmetik erklärt) zu Rundungsfehlern und anderen Ungenauigkeiten. Eine 1.5 (1,5) wird z.B. als 1.5002361123… gespeichert. Diese Ungenauigkeiten sind Rechnerabhänig und lassen sich nicht vorhersehen.

Zahlen lassen sich als Wert auf Variablen übertragen.

Wenn du den Typ einer Variable bestimmst, bekommst du als Rückgabe "number".

Strings

Ein String ist in diesem Fall keine Damenunterwäsche, sondern die englische Bezeichnung für eine Zeichenkette. In Zeichenketten kannst du Buchstaben, Zahlen und Sonderzeichen speichern und verarbeiten. Jede Nachricht, die im Spiel als Text dargestellt wird ist eine Zeichenkette. Der Computer jedoch sieht nicht das dargestellte Wort, sondern eine Nummer. Über diese Nummer greift er auf die ASCII-Tabelle zu und rechnet so mit den Zeichen.

Wir können nicht direkt mit einer Zeichenkette rechnen. Aber wir können auch Sonderzeichen und Steuerzeichen verwenden um unsere Zeichenkette zu formatieren.

Funktionierende Steuerzeichen

  • \n Zeilenumbruch
  • \t Horizontaler Tab
  • \ Escape-Zeichen

Sonderzeichen

Will man innerhalb eines Strings Sonderzeichen verwenden, die für einen String auch eine andere Bedeutung haben, ihn z.B. abbrechen, dann muss das Sonderzeichen "escaped" (maskiert) werden. Liste von nutzbaren Sonderzeichen:

  • \\ maskierter Backslash
  • \' maskiertes Hochkomma
  • \" maskierte Gänsefüßchen
  • \[ maskierte öffnende Klammer
  • \] maskierte schließende Klammer

Diese Sonderzeichen starten/beenden alle eine Zeichenkette.

Nur wenn ich mit " einen String beginne brauche ich bei " in diesem String einen Backslash.
Nur wenn ich mit ' einen String beginne brauche ich bei ' in diesem String einen Backslash.
Nur wenn ich mit [[ einen String beginne muss die Verwendung von [[ oder ]] immer im Paar geschehen.

Über alles andere meckert der Debugger.

String = "Das ist ein \"String\""       -- hier wird \ benötigt
String = 'Das ist ein \"String\"'       -- hier nicht
String = 'Das ist ein \'String\''       -- hier wird \ benötigt
String = "Das ist ein \"String\""       -- hier nicht
String = [[Das ist ein "String"]]       -- hier erst recht nicht

Wenn du den Typ einer Variable bestimmst, bekommst du als Rückgabe "string".

Tables

Tables sind ein unglaublich einfaches aber auch unglaublich komplexes Feld in Lua. Der wichtigste Table in Lua ist _G. Was da nicht drin steht, gibt es auch nicht (ausgenommen lokale Variablen). Auch DIE SIEDLER - Aufstieg eines Königreich haben einen Table _G.

In den Tables string, os, table, math und coroutine stehen dem Lua-Anwender C-geschriebene Funktionen zur Verfügung, mit der die wichtigsten Basisaufgaben von Lua ausgeführt werden können. Hier sieht man sehr schön, dass unser liebes Lua auf der Programmiersprache C basiert.

Eigenschaften

  • Ein Table wird mit { eingeleitet und mit } geschlossen.
  • Elemente innerhalb eines Tables werden durch , abgetrennt.
  • Ein Table hat einen Bezeichner wie jede andere Variable.
  • In einem Table stehen Variablen, Funktionen und andere Tables.
  • Ein Table besteht immer aus einem Schlüssel-Wert-Paar, egal ob numerisch oder bezeichnet.

Nummerische Tables

Ein numerischer Table verwendet als Schlüssel stets eine Zahl. Diese Zahl ist die Indexposition des Wertes im table.

meinTable = {
      [1] = "a",
      [3] = "c",
      [4] = "d",
}

-- oder

meinTable = {}
meinTable[1] = "a"
meinTable[3] = "c"
meinTable[4] = "d"

-- oder

meinTable = {"a", nil, "c", "d"}

Einen numerischen Table kann man einfach mit einer For-Schleife durchgehen.

for i=1,#meinTable,1 do         -- # = Längenoperator für Tables oder table.getn verwenden
      ...
end

Bezeichnete Tables

Ein bezeichneter Table verwendet als Schlüssel einen String. Auf den Wert kann man dann mittels dieses Strings auf 2 Arten zugreifen:

1. Variante: Verwendung des "."-Operators:

meinTable = {}
meinTable.Eins = "a"
meinTable.Drei = "c"
meinTable.Vier = "d"

2. Variante: Angabe des Strings in []-Klammern:

meinTable = {}
meinTable["Eins"] = "a"
meinTable["Drei"] = "c"
meinTable["Vier"] = "d"

Zugriff auf mehrdimensionale Tables

1. Numerische Table

Opa[i][j] = "leck mich am A%sch"            -- i, j sind als Zahlen zu betrachten - es könnte auch 7 und 15 da stehen

2. Benannte Tables mittels "."-Operator:

Opa.Vater.Sohn = "leck mich am A%sch"

3. Benannte Tables über den Namen:

Opa["Vater"]["Sohn"] = "leck mich am A%sch"

Wenn du den Typ einer Variable bestimmst, bekommst du als Rückgabe "table".


Operatoren Blöcke

Zurück zu Grundlagen

Sofern nicht anders angegeben, steht der Inhalt dieser Seite unter Lizenz Creative Commons Attribution-ShareAlike 3.0 License