Hoe voeg ik toe aan een tabel in Lua

Ik probeer het equivalent te vinden van:

foo = []
foo << "bar"
foo << "baz"

Ik wil niet met een oplopende index komen. Is er een gemakkelijke manier om dit te doen?


Antwoord 1, autoriteit 100%

U zoekt de functie insert, te vinden in de sectie tablevan de hoofdbibliotheek.

foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")

Antwoord 2, autoriteit 55%

foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"

Dit werkt omdat de operator #de lengte van de lijst berekent. De lege lijst heeft lengte 0, enz.

Als je Lua 5.3+ gebruikt, kun je bijna precies doen wat je wilde:

foo = {}
setmetatable(foo, { __shl = function (t,v) t[#t+1]=v end })
_= foo << "bar"
_= foo << "baz"

Uitdrukkingen zijn geen uitspraken in Lua en ze moeten op de een of andere manier worden gebruikt.


Antwoord 3, autoriteit 9%

Ik zou persoonlijk gebruik maken van de functie table.insert:

table.insert(a,"b");

Hierdoor hoeft u niet de hele tabel te herhalen en bespaart u waardevolle bronnen zoals geheugen en tijd.

Other episodes