Как добавить к таблице в Lua

Я пытаюсь выяснить эквивалент:

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

Я не хочу придумывать инкрементный индекс. Существует ли простой способ сделать это?

3 ответов


вы ищете


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

это работает, потому что # оператор вычисляет длину списка. Пустой список имеет длину 0, и т. д.

Если вы используете Lua 5.3+, то вы можете сделать почти точно то, что вы хотели:

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

выражения не являются операторами в Lua, и их нужно как-то использовать.


Я лично использую table.insert функция:

table.insert(a,"b");

это избавляет вас от необходимости итерации по всей таблице, поэтому экономя ценные ресурсы, такие как память и время.