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?

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.

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:
Beispiel:
    
    geladeneFunktion, cError = loadfile("dateiName.lua")
    


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:


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:

    
    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:

    
    rawget (myTable, 5true)
    
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:

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:
    
    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