Aller au contenu

Table À 2 Colonnes (Remplissage En Lua)


jojo

Messages recommandés

boujour,

Ne vous moquez pas de moi SVP :5:

 

Je cherche à  remplir en LUA une table à  2 colonnes et plusieurs lignes (=matrice).

finalement je devrais être capable de modifie un élément particulier de la matrice.

 

exemple de table remplie la la main (mais je voudrais le faire en LUA) :

local table = {
  {11, 21},
  {12, 22},
  {13, 23},
  {14, 24}
  }

et je sais  la relire en LUA :

for i = 1, #table do
  fibaro:debug(table[i][1] .. " - " .. table[i][2])
end

et voici le debug

[DEBUG] 18:27:22: Table et sous-table
[DEBUG] 18:27:22: Affichage
[DEBUG] 18:27:22: 11 - 21
[DEBUG] 18:27:22: 12 - 22
[DEBUG] 18:27:22: 13 - 23
[DEBUG] 18:27:22: 14 - 24

cela fait 2 heures que je cherche, et je sais que c'est une bêtise.

Je parie que notre "quiche en LUA" sait comment il faut faire :93:

Lien vers le commentaire
Partager sur d’autres sites

merci mprinfo, avec les infos de Berale24 j'avais trouvé, et j'étais justement entrain de poster la solution

 

la source :

http://www.lua.org/pil/19.2.html

 

le code :

-- table et sous table
fibaro:debug("Table et sous-table")

local tabl = {}
for i = 1,4 do
  table.insert(tabl, {10+i, 20+i})
end

fibaro:debug("Affichage")
for i = 1, #tabl do
  fibaro:debug(tabl[i][1] .. " - " .. tabl[i][2])
end

fibaro:debug("Replace line 2")
table.remove (tabl, 2)
table.insert (tabl, 2, {41, 42})

fibaro:debug("Affichage")
for i = 1, #tabl do
  fibaro:debug(tabl[i][1] .. " - " .. tabl[i][2])
end

le log :

[DEBUG] 19:29:44: Table et sous-table
[DEBUG] 19:29:44: Affichage
[DEBUG] 19:29:44: 11 - 21
[DEBUG] 19:29:44: 12 - 22
[DEBUG] 19:29:44: 13 - 23
[DEBUG] 19:29:44: 14 - 24
[DEBUG] 19:29:44: Replace line 2
[DEBUG] 19:29:44: Affichage
[DEBUG] 19:29:44: 11 - 21
[DEBUG] 19:29:44: 41 - 42
[DEBUG] 19:29:44: 13 - 23
[DEBUG] 19:29:44: 14 - 24
Lien vers le commentaire
Partager sur d’autres sites

"append" cela me rappel du dbase APPEND BLANK

 

Jojo pour visualisé je préfère cela

for _,v in ipairs(table) do
  fibaro:debug(v[1] .. " - " .. v[2])
end

plutôt que cela

for i = 1, #table do
  fibaro:debug(table[i][1] .. " - " .. table[i][2])
end
Lien vers le commentaire
Partager sur d’autres sites

Merci à  tous pour vos retours.

J'ai beaucoup appris, dont le fait que ce que je voulais faire fonctionne en théorie, mais pas dans la pratique (problèmes des ms de la box)

Donc j'abandonne, c'était quand-même pour "enc...." les mouches.

Et évidemment, je n'y suis pas arrivé. Je devrais peut-être demander à  mprinfo qui en a une petite ... :98:

 

Lazer, merci, mais j'ai rien compris ...

 

Il y a ça aussi pour ajouter des nouvelles lignes à  une table existante, qui pourrait s'appeler table.append() :

datas[#datas+1] = {}
datas[#datas].id = 1
datas[#datas].name = 'toto'
datas[#datas].value = 127
  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

ok, j'ai pigé. (je suis belge : je comprend vite, mais il faut m'expliquer longtemps ...)

C'est tordu, mais beau.

mais làc'est une table avec des clé, juste c'est mieux.

Peux-être qu'un replace pourrait se faire également de la sorte, sans faire de remove puis de insert.

A tester

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

jojo, ma technique de "append" (que je n'ai pas inventé mais trouvé avec l'aide de mon ami Google...) permet d'ajouter un élément àun tableau existant, quand tu ne connais pas àquel indice tu en es.

Je voulais juste partager une technique supplémentaire qui peut être utile dans certain cas (je l'utilise massivement dans Domocharts)

Lien vers le commentaire
Partager sur d’autres sites

- On ne calcule qu'une seule fois le nombre d'éléments dans la table (opérateur # ) et on stocke dans une variable locale

- Les boucles "for" par "incrément de 1" sont plus rapides qu'en utilisant "ipairs", lui-même plus rapide que "pairs"

 

Bon après ça se joue à  pas grand chose, faut vraiment faire du benchmark sur de très grosses boucles pour sentir la différence.

 

Et même si le ipairs est un peu plus lent que l'incrément par 1, il permet d'alléger l'écriture, et donc la compréhension du code, donc ça a ses avantages quand même.

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...