next

next (_Table [, _Key ])
Gibt für ein Table _Table das nächste Key-Value-Paar des Tables, abhängig von _Key zurück. Ist _Key nicht angegeben, wird ein beliebiges Key-Value-Paar zurückgegeben. Ist _Table leer oder das letzte Element erreicht, wird nil zurückgegeben. Die Reihenfolge, in der die Key-Value-Paare des Tables zurückgegeben werden, ist undefiniert und kann jedes mal unterschiedlich sein.

Parameter

NameTypBeschreibung
_Table Table Das Table, dessen nächstes Key-Value-Paar zurückgegeben werden soll
_Key Zahl oder String Optionaler Parameter; Wenn angegeben, wird ein nächstes Key-Value-Paar von _Key aus zurückgegeben. Welches das ist, ist undefiniert, allerdings ist der zurückgegebene Key garantiert von _Key verschieden, wenn er nicht nil ist. Wird _Key nicht angegeben, wird ein beliebiges Key-Value-Paar zurückgegeben

Rückgabewerte

NameTypBeschreibung
Key Zahl, String oder nil Ein Key im Table _Table. Kann nil sein, falls _Table leer oder das letzte Element erreicht ist
Value Beliebig Der Value, der im Table _Table mit Key assoziiert ist. Kann nil sein, falls _Table leer oder das letzte Element erreicht ist

Der wichtigste Anwendungsfall von next ist zu prüfen, ob ein Table leer ist:

function IsTableEmpty(_Table)
    local Key, _ = next(_Table)
    return Key == nil
end

Außerdem liegt next dem Iterator zugrunde, der von pairs zurückgegeben wird. Folgende Schleifen sind also äquivalent:

Dictionary = {
    Computer = "Rechner",
    Mouse = "Maus",
    Keyboard = "Tastatur",
    Screen = "Bildschirm"
}
 
-- for-Schleife mit pairs
for Key, Value in pairs(Dictionary) do
    print(Key.." bedeutet "..Value)
end
 
-- while-Schleife mit next
local Key, Value = next(Dictionary)
while Value ~= nil do
    print(Key.." bedeutet "..Value)
    Key, Value = next(Dictionary, Key)
end

Verwendete Funktionen: