web-dev-qa-db-fra.com

Comment puis-je ajouter à une table dans Lua

J'essaie de trouver l'équivalent de:

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

Je ne veux pas avoir à créer un index incrémentiel. Y a-t-il un moyen facile de faire ceci?

32
drewish

Vous recherchez la fonction insert qui se trouve dans la section table de la bibliothèque principale.

foo = {}
table.insert(foo, "bar")
table.insert(foo, "baz")
43
rsethc
foo = {}
foo[#foo+1]="bar"
foo[#foo+1]="baz"

Cela fonctionne car l'opérateur # Calcule la longueur de la liste. La liste vide a une longueur de 0, etc.

Si vous utilisez Lua 5.3+, vous pouvez faire presque exactement ce que vous vouliez:

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

Les expressions ne sont pas des déclarations en Lua et doivent être utilisées d'une manière ou d'une autre.

33
lhf

Je me servirais personnellement du table.insert une fonction:

table.insert(a,"b");

Cela vous évite d'avoir à parcourir la table entière, ce qui vous permet d'économiser des ressources précieuses telles que la mémoire et le temps.

6
AStopher