Lua Logo
Funktionen im Table table

table.concat (table [, sep [, i [, j]]])
table.foreach (table, f)
table.foreachi (table, f)
table.getn (table)
table.sort (table [, comp])
table.insert (table, [pos,] value)
table.remove (table [, pos])
table.setn (table, n)

nach obentable.concat (table [, sep [, i [, j]]])

Verbindet die Werte eines tables mit ..

Parameter:

Wir erinnern uns, strings und Zahlen können mit .. verbunden werden. ( "a" .. 5 --> "a5" )
Das gleiche macht diese Funktion mit den Werten eines numerischen tables.

Beispiele:
    
    myTable = {
      19,
      "eisen",
      10,
      "guss",
    }
    ergebnis = table.concat(myTable)
    print(ergebnis) --> 19eisen10guss
    
    ergebnis = table.concat(myTable, " leer ")  
    print(ergebnis) --> 19 leer eisen leer 10 leer guss
    
    ergebnis = table.concat(myTable, " leer "2)  
    print(ergebnis) --> eisen leer 10 leer guss
    
    ergebnis = table.concat(myTable, " leer "23)  
    print(ergebnis) --> eisen leer 10
    

nach obentable.foreach

Diese Funktion geht jeden Index des tables durch und übergibt ihn an die Funktion, die als zweiter Parameter steht.

Als Parameter ist folgendes zu übergeben:
    
    table.foreach (meinTable , MeineFunktion)
    

Beispiel:
    
    meinTable = {}
    meinTable.wert1 = true
    meinTable.wert3 = 8
    meinTable[1] = "Name1"
    meinTable[7] = "Name7"
    
    function DruckWas(_index)
        print( _index, meinTable[_index] ) 
    end
    
    table.foreach( meinTable, DruckWas )
    






nach obentable.foreachi

Diese Funktion ist analog zur vorhergehenden, aber sie geht nur numerische Indexe durch. Und zwar nur so lange, bis eine Reihenfolge unterbrochen wird.

Als Parameter ist folgendes zu übergeben:
    
    table.foreachi (meinTable , MeineFunktion)
    

Beispiel:
    
    meinTable = {}
    meinTable.wert1 = true
    meinTable.wert3 = 8
    meinTable[1] = "Name1"
    meinTable[7] = "Name7"
    
    function DruckWas(_index)
        print( _index, meinTable[_index] ) 
    end
    
    table.foreachi( meinTable, DruckWas )
    




Man sieht hier, dass die 7 nicht gedruckt wird. Und zwar weil 2 - 6 fehlen.



nach obentable.insert

Diese Funktion platziert eine Variable an das Ende eines Tables. Wird die Position angegeben, so wird der Wert an diese Stelle platziert und die folgenden eins weiter geschoben. Es wird nichts zurückgegeben sondern das table direkt verändert

Als Parameter ist folgendes zu übergeben:
    
    table.insert (meinTable , [position,] wert)
    

Beispiel:
    
    meinTable = {}
    table.insert (meinTable  , 5)
            resultat    --> = meinTable[1] == 5
    -- noch mal:
    table.insert (meinTable  , "Luna")
            resultat  --> = meinTable[1] == 5
                meinTable[2] == "Luna"
    -- noch mal:
    
    table.insert (meinTable , 2true)
            resultat  --> = meinTable[1] == 5
                meinTable[2] == true
                meinTable[3] == "Luna"
    

nach obentable.getn

Diese Funktion gibt die Größe eines numerischen Tables zurück.

Als Parameter ist folgendes zu übergeben:
    
    tableGroesse = table.getn(meinTable)
    
Beispiel:
    
    myTable={ 136"toll"false, { 8,9} )
    
    tableGroesse = table.getn ( myTable )    --> tableGroesse == 6
    tableGroesse = table.getn ( myTable[6] ) --> tableGroesse == 2
    


nach obentable.remove

Diese Funktion streicht ein Element aus einem numerischen Table und lässt die anderen aufrücken wenn nötig.

Als Parameter ist folgendes zu übergeben:
Wird die Position nicht angegeben, wird das letzte Element gelöscht.
    
    geloeschtesElement = table.remove(meinTable[, pos])
    
Beispiel:
    
    myTable = { 136"toll"false, { 8,9} )
    myTable[3] == 6
    geloeschtesElement = table.remove(myTable, 3)
    
    Daraus folgt -->
    
    
    myTable[3] == "toll"
    geloeschtesElement == 6
    

nach obentable.setn

Diese Funktion ändert die größe eines numerischen tables.

Als Parameter ist folgendes zu übergeben:
    
    table.setn (meinTable , 7)
    

Beispiel:
Oben, bei table.foreachi wurde nach der 1 nichts mehr gedruckt
    
    meinTable = {}
    meinTable.wert1 = true
    meinTable.wert3 = 8
    table.setn(meinTable,7)
    meinTable[1] = "Name1"
    meinTable[7] = "Name7"
    
    function DruckWas(_index)
        print( _index, meinTable[_index] ) 
    end
    
    table.foreachi( meinTable, DruckWas )
    



Wir sehen, dass jetzt die Werte bis 7 besetzt sind.
Selbstverständlich kann man das table auch verkleinern mit dieser Funktion. Dann sind alle größeren Werte weg






nach obentable.sort (table [, comp])

Sortiert ein numerisches table ( myTable[1] ... myTable[n] )

Parameter:

Ist comp nicht angegeben, so wird entsprechend dem `<´ Operator sortiert.

Beispiele:
    
    myTable = {}
    myTable[1] = 77
    myTable[2] = 8
    myTable[3] = 717
    myTable[4] = 55
    
    table.sort(myTable)
    
dann ist
    
    myTable[1--> 8
    myTable[2--> 55
    myTable[3--> 77
    myTable[4--> 717
    
____________________________________________________________________

oder
    
    myTable = {}
    myTable[1] = "z"
    myTable[2] = "o"
    myTable[3] = "f"
    myTable[4] = "n"
    
    
    table.sort(myTable)
    
dann ist
    
    myTable[1--> "f"
    myTable[2--> "n"
    myTable[3--> "o"
    myTable[4--> "z"
    
____________________________________________________________________

Alle Werte müssen vom gleichen Type sein. Sonst kommt ein Error: attempt to compare string with number

Ein table in dem die Indexe nicht numerisch sind kann direkt nicht sortiert werden. Um dies in einer Reihenfolge zu haben muss man die Indexe zuerst in ein numerisches table schreiben und anschließend dieses table dann sortieren.

Beispiel:
    
    meinTable = {}
    meinTable.Z = 89
    meinTable.X = 8
    meinTable.Y = 55
    
    sortierTable = {}
    
    for index in pairs(meinTable) do 
        table.insert(sortierTable, index) 
    end
    
    sortierTable[1--> Y
    sortierTable[2--> X
    sortierTable[3--> Z
    
jetzt kann das sortierTable sortiert werden
    
    table.sort(sortierTable)
    
    sortierTable[1--> X
    sortierTable[2--> Y
    sortierTable[3--> Z
    
Die Sortierfunktion:

Als zweiten Parameter kann man eine Funktion übergeben, die die Sortierreihenfolge bestimmt.
Sie bekommt zwei Werte des Tables als Parameter. Dann muss sie bestimmen, welches der beiden zuerst kommt.
Soll der erste Wert vor dem zweiten liegen, so muss sie true zurückgeben. Andernfalls nichts oder false.

Beispiel:
    
    myTable = {
      10,
      124,
      10,
      48,
    }
        
    function comp(w1,w2)
        if w1 > w2 then
            return true
        end
    end
    
    table.sort(myTable,comp)
    
hiermit wird die Reihenfolge umgekehrt
    
    myTable[1--> 124
    myTable[2--> 48
    myTable[3--> 10
    myTable[4--> 10
    

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