Lua Logo
Basis Funktionen



assert(Bedingung[, Meldung])
collectgarbage ([grenze])
dofile(dateiName)
error( Meldung[, stufe] )
gcinfo()
_G
getfenv (f)
ipairs (table)
loadfile(dateiName)
loadstring (string [, chunkname])
next(table[, index])
pairs (table)
pcall (myFunktion, Parameter1, Parameter2, ...)
print (e1, e2, ...)
rawequal (v1, v2)
rawget (table, index)
rawset (table, index, value)
require (packagename)
setfenv (f, table)
setmetatable (table, metatable)
tonumber (e [, base])
tostring (e)
type( variable )
unpack (list)
_VERSION
xpcall (f, err)

nach obenassert(Bedingung[, Meldung])

Sobald die Bedingung false oder nil ist, Wird das Programm gestoppt und die Meldung ausgegeben.

Als Meldung erscheint:

NameDerDatei:ZeilenNummer:Meldung

Stack traceback:

jetzt wird der Reihe nach aufgezählt woher der Aufruf kommt.

Beispiel:

assert( 1 == 2, "Das stimmt nicht" )

--> NameDerDatei:ZeilenNummer:Das stimmt nicht



nach obencollectgarbage ([grenze])

Der garbage collector. (Müllarbeiter)

Mit dieser Funktion kann die Müllabfuhr des Programms per Code aufgerufen werden und die Höhe des reservierten Speichers für die Müllabfuhr festgelegt werden.

Die Müllabfuhr (der garbage collector) befreit den Speicher von nicht mehr gebrauchtem Speicherplatz. Die Angabe der Grenze ist optional.
Wird kein Parameter übergeben, so wird 0 genommen.

Beispiel:

print( gcinfo()) --> 17 29
grosserString = string.rep('a', 100000) -- viel Speicher wird gebraucht
print( gcinfo()) --> 322 197
collectgarbage (10000)
print( gcinfo()) --> 163 10000 scheinbar wurde doch nicht so viel gebraucht. Die Grenze auf die gewünschten 10000 gesetzt
collectgarbage (5)
print( gcinfo()) --> 139 279 noch ein bischen gefunden. Die Grenze 5 war ihm zu wenig.
grosserString = nil -- der Wert in grosserString ist jetzt nicht mehr erreichbar. Wird also nicht mehr gebraucht.
collectgarbage ()
print( gcinfo()) --> 29 59


!!!!!!!!! Ab lua 5.1 ersetzt collectgarbage("count") die Funktion gcinfo() !!!!!!!!!!


nach obendofile(dateiName)

Öffnet die angegebene Datei dateiName und führt sie als Lua-Code aus.

Rückgabe: Das was die Datei über return zurückgibt.

Mit Hilfe dieser Funktion kann man ein Projekt in beliebig viele Dateien zerlegen. Es ist dann so, als ob es in einem Guss geschrieben wäre.

Beispiel:

Datei 1 (Unit1.lua)

return "Ich bin Datei 1"

Datei 2 (Unit2.lua) <-- wird ausgeführt

print( dofile("Unit1.lua") ) --> Ich bin Datei 1


nach obenerror( Meldung[, stufe] )

Die Funktion error ist dazu da, den mit dem letzten geschützten Aufruf aufgetretenen Fehler in Abhängigkeit von dem Wert in stufe auszugeben und das Programm zu beenden.

Um den Parameter stufe zu erklären habe ich folgende Funktionen genommen:


1 function IchHabDenFehler()
2 a = ""
3 print( a..b ) -- b ist nil daher Fehler
4 end
5
6 function myError()
7 _, cError = pcall(IchHabDenFehler) -- hier wird die Funktion mit pcall (geschützt) aufgerufen
8 end
9
10 function Call_1()
11 error(cError,1) -- hier wird die Errormeldung ausgegeben und das Programm beendet
12 end
13
14 function Call_2() -- eine Zwischenstation
15 Call_1()
16 end
17 myError() -- Funktion, die den Fehler geschützt erzeugt wird aufgerufen
18
19 Call_2() -- Funktion, die über Umwege den Fehler ausgibt wird aufgerufen


Was passiert?

  • Alle Funktionen werden eingelesen.
  • Die Funktion myError wird aufgerufen.
  • Diese ruft die Funktion IchHabDenFehler geschützt durch pcall auf.
  • Durch den Aufruf mit pcall wird der Fehler nicht sofort ausgegeben
  • Die Meldung wird in cError gespeichert
  • Dann wird die Funktion Call_2 aufgerufen
  • Diese ruft Call_1 auf
  • In Funktion Call_1 wird cError in Abhängigkeit von stufe ausgegeben.
Jetzt die Ergebnisse:

stufe = 0 --> der Fehler wird direkt ausgegeben.

next

stufe = 1 --> eine Stufe vorher

next

stufe = 2 --> noch eine Stufe vorher

next

stufe = 3 --> und noch eine Stufe vorher

next


nach obengcinfo()

!!!!!!!!! Ab lua 5.1 ersetzt collectgarbage("count") diese Funktion !!!!!!!!!!

Die Funktion gibt zwei Werte zurück.

  • Als ersten : der Wert, des belegten Speichers.
  • Als zweites: der Wert, des reservierten Speichers für den garbage collector. (Müllarbeiter)
Der garbage collector ist ein selbständig arbeitendes Programmteil, das dafür sorgt, dass nicht mehr benötigter Speicherplatz freigegeben wird. Siehe auch collectgarbage

Beides in kb.

!!!!!!!!! Ab lua 5.1 ersetzt collectgarbage("count") diese Funktion !!!!!!!!!!

Beispiel:

print( gcinfo()) --> 17 29
grosserString = string.rep('a', 100000) -- viel Speicher wird gebraucht
print( gcinfo()) --> 322 197


nach obennext(table[, index])

Die Funktion next gibt ungeordnet den auf index folgenden nächsten index zurück. Bei index == nil gibt next den ersten index zurück. Ist das letzte Element erreicht, so gibt next nil zurück.

Beispiel:

next

Nachempfundene Funktion inext:

function inext(_table, _index)
_index = next(_table, _index)
if _index then
if type(_index) ~= "number" then
repeat
_index = next(_table, _index)
if type ( _index) == "number" then
break
end
until not _index
end
end
return _index
end


nach obenpairs (table)

Die Funktion pairs hat als einzige Aufgabe die Funktion next und dann das eingegebene table zurück zu geben.

myFunc, myTable = pairs( table )

Dann ist in myFunc die Funktion next
und in myTable das übergebene Table.

Sie findet Anwendung in der generischen for - Schleife.


nach obenipairs (table)

Die Funktion ipairs hat als einzige Aufgabe eine Funktion ähnlich next und dann das eingegebene table zurück zu geben.
Wenn es die Funktion inextnamendlich gäbe würde ich sagen sie gibt diese zurück.

myFunc, myTable = ipairs( table )

Dann ist in in myFunc eine Funktion ähnlich wie next, allerdings gibt sie nur den nächsten numerichen Index zurück.
und in myTable das übergebene Table.

Sie findet Anwendung in der generischen for - Schleife.


nach obenloadfile(dateiName)

Öffnet die angegebene Datei dateiName und führt sie aber nicht als Lua-Code aus.

Rückgaben sind zwei:
  • die compilierte Datei als Funktion. (Im Falle eines Fehlers nil)
  • die Error-Nachricht (falls vorhanden sonst nil)
Beispiel:

geladeneFunktion, cError = loadfile("dateiName.lua")

  • ist geladeneFunktion == nil --> ein Fehler ist da. In cError steht dann der Text dazu.
  • andernfalls ist in geladeneFunktion die compilierte Datei als Funktion.


nach obenpcall (myFunktion, Parameter1, Parameter2, ...)

Die Funktion pcall ruft die Funktion myFuntion mit den anschließenden Parametern auf.

Der Unterschied zum normalen Aufruf: Es wird nicht sofort auf Fehler reagiert.

Die Funktion hat als Rückgaben:

  • alles ordnungsgemäß verlaufen --> true / bei Fehler --> false
  • darauf folgen die Werte die die Funktion zurückgibt. Im Falle eines Fehlers kommt die Fehlermeldung.

Beispiel:

pcall

Das Programm bricht nicht ab und man hat die Fehlermeldung um darauf zu reagieren.

nach obenrawget (table, index)

Holt einen Wert aus einem table
Die Funktionen rawequal, rawget und rawset umgehen ein gesetztes Metatable.

Parameter:

  • Das table aus dem ein Wert gebraucht wird
  • Der index im table. (Dies kann irgendein gülter Wert ausser nil sein)

ergebnis = rawget (myTable, 5)

Ist vergleichbar mit

ergebnis = myTable[5]

nach obenrawset (table, index, value)

Setzt einen Wert in einem table
Die Funktionen rawequal, rawget und rawset umgehen ein gesetztes Metatable.

Parameter:

  • Das table in dem ein Wert gesetzt werden soll
  • Der index im table. (Dies kann irgendein gülter Wert ausser nil sein)

rawget (myTable, 5, true)

Ist vergleichbar mit

myTable[5] = true

nach obentonumber (e [, base])

Wandelt die Variable in eine Zahl zur Basis 10 um. Gelingt das nicht ist das Ergebnis nil.

Parameter:

  • Ein Wert ( Zahl oder String )
  • Die Basis, die bei der Umwandlung zu Grunde gelegt werden soll (Optional; Vorgabe ist 10)
Die Basis kann einen geradzahligen Wert zwischen 2 und 36 haben.

Am besten mit Beispielen zu erklären:

print(tonumber("55")) --> 55
print(tonumber(55)) --> 55
print(tonumber("55a")) --> nil
print(tonumber(10101.1012e12)) --> 1.01011012e+16

print(tonumber("100110"), 2) --> 38
print(tonumber("100112"), 2) --> nil

print(tonumber("LUA"), 36) --> 28306


nach obentype( variable )

Diese Funktion gibt einen String mit dem Typ einer Variablen zurück.

Als Parameter ist folgendes zu übergeben:
  • Die Variable die überprüft werden soll Der Wert, der hinein soll

type (variable)

Mögliche Rückgaben:

"nil, "number", "string", "boolean, "table", "function", "thread", und "userdata".


Beispiel:

resultat = type (5)
--> resultat == "number"

meineVar = "Das ist ein Satz"
resultat = type ( meineVar )
--> resultat == "string"


Die Vervielfältigung der auf diesen Seiten enthaltenen Informationen und Grafiken ist untersagt, ausgenommen davon ist sämtlicher auf diesen Seiten angezeigter Quellcode.
Siehe auch: Haftungsausschluss
Copyright © Robert Schmitz 2006