Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage zu Table oder was auch immer das ist.



marjue
19.03.2020, 14:56
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?


local CreatorExternalToolFilterProvider = {}

CreatorExternalToolFilterProvider.exportPresetFiel ds = {
{ 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

gamerpaddy
19.03.2020, 15:57
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

auswahl = table[1]
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.exportPresetFiel ds" in "tbl" umbenannt.


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)