Ich versuche, das Äquivalent von herauszufinden:Wie kann ich an einem Tisch in Lua anhängen
foo = []
foo << "bar"
foo << "baz"
Ich möchte nicht mit einem Inkrementieren Index kommen zu lassen. Gibt es einen einfachen Weg, dies zu tun?
Ich versuche, das Äquivalent von herauszufinden:Wie kann ich an einem Tisch in Lua anhängen
foo = []
foo << "bar"
foo << "baz"
Ich möchte nicht mit einem Inkrementieren Index kommen zu lassen. Gibt es einen einfachen Weg, dies zu tun?
Sie suchen nach der insert
Funktion, die im table
Abschnitt der Hauptbibliothek gefunden wird.
foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
Ah so: foo = {}; table.insert (foo, "bar"); table.insert (foo, "baz") – drewish
Verdammt, Sie antworteten mit der 'insert' -Funktion, während ich meine Antwort eintippte. *Große Köpfe denken ähnlich*. :-) – cybermonkey
Genau. Sie brauchen die Semikolons auch nicht, aber Sie können em haben, wenn Sie möchten. – rsethc
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"
Das funktioniert, weil die #
Bediener die Länge der Liste berechnet. Die leere Liste hat die Länge 0, usw.
Wenn Sie Lua 5.3+ verwenden, dann können Sie fast genau das tun, was man wollte:
foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"
Ausdrücke sind keine Aussagen in Lua und sie sein müssen irgendwie benutzt.
Bitte erweitern Sie, warum Ihre Methode funktioniert .. – cybermonkey
Ich bin nicht verliebt in die Art, wie es aussieht, aber schön zu wissen, dass es funktioniert. – drewish
Es ist etwas schneller als 'table.insert'. – Tim
Ich würde persönlich Nutzung der table.insert
Funktion machen:
table.insert(a,"b")
Dies erspart Ihnen die gesamte Tabelle somit wertvolle Ressourcen wie Speicher und Zeitersparnis iterieren haben.
Die gesamte Dokumentation ist verfügbar unter http://www.lua.org/manual/5.2/ – rsethc
oh das ist wirklich hilfreich. google hat mich immer auf http://www.lua.org/pil/2.5.html hingewiesen, was im Grunde nutzlos ist. – drewish