Lerne Lua in 10 Minuten
Ich bin Lua - eine superleichte Programmiersprache, perfekt zum Einbetten in andere Anwendungen. Wusstest du, dass ich in Spielen wie ‘World of Warcraft’ und Roblox verwendet werde? Ich bin auch beliebt für Konfigurationsskripte!
1. Dein erstes Lua-Programm
Lass uns mit den Grundlagen beginnen. Erstelle eine Datei hello.lua
und schreibe:
print("Hello, World!")
Speichere und führe im Terminal aus:
lua hello.lua
Du wirst sehen:
Hello, World!
Siehst du, wie einfach das ist! print()
zeigt Text auf dem Bildschirm an.
2. Grundlegende Syntax
Meine Syntax ist super einfach:
-- Das ist ein einzeiliger Kommentar
print("Hallo Welt!")
--[[
Das ist ein mehrzeiliger
Kommentar
]]
Wichtige Punkte:
- Kommentare: Eine Zeile
--
, mehrere--[[ ]]
- Anweisungen: Eine pro Zeile, kein Semikolon nötig
- Groß-/Kleinschreibung: Ich unterscheide Groß- und Kleinschreibung
- Leerzeichen: Leerzeichen und Zeilenumbrüche sind egal
3. Variablen und Datentypen
Ich bin dynamisch typisiert, keine Typdeklaration nötig:
-- Direkte Zuweisung
name = "Lua"
alter = 25
toll = true
pi = 3.14159
-- Mehrfachzuweisung
x, y, z = 10, 20, 30
-- Leerer Wert ist nil
leer = nil
print("Name:", name)
print("Alter:", alter)
print("Toll?:", toll)
Meine Datentypen:
- nil: Kein Wert
- boolean: true oder false
- number: Zahlen (ganze und dezimale)
- string: Text
- table: Meine universelle Datenstruktur
- function: Funktionen (First-Class Citizens)
- userdata: Für C
- thread: Coroutinen
4. String-Manipulation
-- Strings erstellen
str1 = "Hallo"
str2 = 'Welt'
str3 = [[Mehrzeiliger
Text einfach]]
-- Verketten mit ..
nachricht = str1 .. " " .. str2
print(nachricht) -- Ausgabe: Hallo Welt
-- Länge mit #
laenge = #"Hallo"
print(laenge) -- Ausgabe: 5
-- String-Methoden
text = "hello world"
gross = text:upper()
klein = text:lower()
teil = text:sub(1, 5)
print(gross) -- Ausgabe: HELLO WORLD
print(teil) -- Ausgabe: hello
5. Tabellen - Mein universeller Container
Tabellen sind meine beste Funktion:
-- Als Array (Indizes ab 1)
fruchte = {"Apfel", "Banane", "Kirsche"}
print(fruchte[1]) -- Ausgabe: Apfel
print(fruchte[2]) -- Ausgabe: Banane
-- Als Dictionary
person = {
name = "Max",
alter = 30,
stadt = "Berlin"
}
print(person.name) -- Ausgabe: Max
print(person["alter"]) -- Ausgabe: 30
-- Gemischt geht auch
gemischteTabelle = {
"Apfel",
"Banane",
farbe = "rot",
anzahl = 5
}
-- Tabellenoperationen
fruchte = {"Apfel", "Banane"}
table.insert(fruchte, "Kirsche") -- Am Ende hinzufügen
table.insert(fruchte, 2, "Orange") -- An Position einfügen
print(table.concat(fruchte, ", ")) -- Ausgabe: Apfel, Orange, Banane, Kirsche
6. Kontrollstrukturen
-- If
alter = 18
if alter >= 18 then
print("Du bist erwachsen")
elseif alter >= 13 then
print("Du bist Teenager")
else
print("Du bist Kind")
end
-- While
zaehler = 1
while zaehler <= 5 do
print("Zähler:", zaehler)
zaehler = zaehler + 1
end
-- For numerisch
for i = 1, 5 do
print("Zahl:", i)
end
-- For mit Schritt
for i = 10, 1, -2 do
print("Countdown:", i)
end
-- For für Tabellen
fruchte = {"Apfel", "Banane", "Kirsche"}
for index, frucht in ipairs(fruchte) do
print(index, frucht)
end
person = {name = "Max", alter = 30}
for schluessel, wert in pairs(person) do
print(schluessel, wert)
end
7. Funktionen
-- Grundlegende Funktion
function begruessen(name)
return "Hallo, " .. name .. "!"
end
nachricht = begruessen("Anna")
print(nachricht) -- Ausgabe: Hallo, Anna!
-- Mehrere Rückgabewerte
function berechnen(a, b)
return a + b, a - b, a * b, a / b
end
summe, differenz, produkt, quotient = berechnen(10, 5)
print("Summe:", summe) -- Ausgabe: Summe: 15
print("Differenz:", differenz) -- Ausgabe: Differenz: 5
-- Anonyme Funktion (Lambda)
multiplizieren = function(x, y)
return x * y
end
ergebnis = multiplizieren(4, 5)
print(ergebnis) -- Ausgabe: 20
-- Funktionen als Parameter
function operationAusfuehren(x, y, operation)
return operation(x, y)
end
ergebnis = operationAusfuehren(6, 7, multiplizieren)
print(ergebnis) -- Ausgabe: 42
8. Module
Organisiere Code in Modulen. Erstelle mathematik.lua
:
-- mathematik.lua
local Mathematik = {}
function Mathematik.addieren(a, b)
return a + b
end
function Mathematik.multiplizieren(a, b)
return a * b
end
return Mathematik
Verwende in der Hauptdatei:
-- haupt.lua
local mathematik = require("mathematik")
ergebnis = mathematik.addieren(10, 5)
print("Additionsergebnis:", ergebnis) -- Ausgabe: Additionsergebnis: 15
ergebnis = mathematik.multiplizieren(4, 6)
print("Multiplikationsergebnis:", ergebnis) -- Ausgabe: Multiplikationsergebnis: 24
9. Fehlerbehandlung
-- Fehler abfangen mit pcall
function gefaehrlicheOperation()
error("Etwas ist schiefgelaufen!")
end
-- pcall ruft geschützt auf
erfolg, ergebnis = pcall(gefaehrlicheOperation)
if erfolg then
print("Erfolg:", ergebnis)
else
print("Fehlschlag:", ergebnis)
end
-- Benutzerdefinierte Fehler
function dividieren(a, b)
if b == 0 then
error("Division durch Null nicht erlaubt")
end
return a / b
end
erfolg, ergebnis = pcall(dividieren, 10, 0)
if not erfolg then
print("Fehler:", ergebnis)
end
10. Praktische Beispiele
-- Einfacher Taschenrechner
function taschenrechner()
print("🐮 Einfacher Taschenrechner")
print("1. Addition")
print("2. Subtraktion")
print("3. Multiplikation")
print("4. Division")
wahl = tonumber(io.read())
print("Erste Zahl:")
zahl1 = tonumber(io.read())
print("Zweite Zahl:")
zahl2 = tonumber(io.read())
if wahl == 1 then
ergebnis = zahl1 + zahl2
print("Ergebnis:", ergebnis)
elseif wahl == 2 then
ergebnis = zahl1 - zahl2
print("Ergebnis:", ergebnis)
elseif wahl == 3 then
ergebnis = zahl1 * zahl2
print("Ergebnis:", ergebnis)
elseif wahl == 4 then
if zahl2 ~= 0 then
ergebnis = zahl1 / zahl2
print("Ergebnis:", ergebnis)
else
print("❌ Division durch Null")
end
else
print("🤔 Ungültige Wahl")
end
end
-- Zum Verwenden, Kommentar entfernen
-- taschenrechner()
-- Dateioperationen
function dateiLesen(dateiname)
local datei = io.open(dateiname, "r")
if not datei then
return nil, "Datei konnte nicht geöffnet werden"
end
local inhalt = datei:read("*a")
datei:close()
return inhalt
end
inhalt, fehler = dateiLesen("beispiel.txt")
if inhalt then
print("Dateiinhalt:", inhalt)
else
print("Fehler:", fehler)
end
Fazit
Ich Lua bin fantastisch! Perfekt für:
- 🎮 Spielescripting (viele Spiele nutzen mich)
- 🔧 Embedded-Entwicklung (wegen meiner Leichtigkeit)
- ⚙️ Konfigurationsdateien und Automatisierung
- 🚀 Hochleistungsszenarien (mit LuaJIT)
Das Beste an mir:
- Superleicht: Brauche wenig Speicherplatz
- Schnell: LuaJIT ist ultraschnell
- Flexibel: Dynamische Typisierung + universelle Tabellen
- Portabel: Lauf auf Mobilgeräten und Servern
- Einfach einzubetten: Verstehe mich gut mit C/C++
Willst du mehr lernen? Versuche:
- Lua-Standardbibliothek
- Coroutinen (nebenläufige Programmierung)
- Metatabellen und Metamethoden (für OOP)
- Lua-C-API
- Love2D für Spieleentwicklung
Ich Lua bin einfach zu lernen und sehr mächtig! 🚀