Anfängerfrage zu Table oder was auch immer das ist.
Hallo
Ich bin derzeit dabei ein LightRoom Plugin zu schreiben und habe ein Verständnisproblem. Bin neu in LUA und arbeite mich grad ein nach den try and error Prinzip.
Aber hier komm ich grad nicht weiter. Weder mit Google noch mit meinem Buch.
Was ist das hier genau? Eine Table?
Code:
local CreatorExternalToolFilterProvider = {}
CreatorExternalToolFilterProvider.exportPresetFields = {
{ key = 'destwidth', default = '1920' },
{ key = 'destheight', default = '1080' },
{ key = 'enlarge', default = false },
}
Wie kann ich einen einzelnen Wert z.B. die destwith wieder heraus bekommen etwa mit einem simplen print.
Alle Syntaxvarianten führen entweder zu NIL oder einem Fehler aber nie zu 1920.
Vielen Dank schon mal für die Hilfe
Marcus
AW: Anfängerfrage zu Table oder was auch immer das ist.
Das ist ein 2 dimensionales table, sprich listen in einer liste. Das kann man mehrfach machen, wie tief das limit ist weiß ich aber nicht.
http://lua-users.org/wiki/TablesTutorial
Mit
gibst du der variable "auswahl" den zweiten table als kopie.
Die werte kannst du dir dann so ausgeben:
print(auswahl.key)
print(auswahl.default)
oder auch
print(auswahl[0])
print(auswahl[1])
Wenn du die daten ändern willst, darfst du keine kopie erstellen oder musst zumindest die daten danach wieder zusammenführen.
direkt ändern:
table[1].key="destheight_neu"
ändert "destheight" in "destheight_neu"
zusammenführen:
auswahl = table[1]
auswahl.key="destheight_neu"
table[1] = auswahl
Mit dieser funktion kannst du table und sub-table in der konsole ausgeben.
Für bessere lesbarkeit hab ich "CreatorExternalToolFilterProvider.exportPresetFie lds" in "tbl" umbenannt.
Code:
local tbl = {
{ key = 'destwidth', default = '1920' },
{ key = 'destheight', default = '1080' },
{ key = 'enlarge', default = false },
}
function printTable(_tbl)
for k,v in pairs(_tbl) do
if type(v) == "table" then
printTable(v) --rekursion damit sub-table ebenfalls geprintet werden.
else
print(tostring(k).." \t"..tostring(v))
end
end
end
printTable(tbl)