Pour faire simple, une matrice est un tableau de nbLignes et nbColonnes.
Colonne 1 | Colonne 2 | Colonne 3 | Colonne 4 | Colonne 5 | Colonne 6 | Colonnes y | |
Ligne 1 | |||||||
Ligne 2 | |||||||
Ligne x |
La déclaration d'une matrice en LUA est différente de la déclaration d'une matrice avec un autre langage, comme le C ou le Pascal.
Il y a deux façons principales de créer une matrice en LUA.
1- Utiliser une table de table.
2- Rassembler les 2 indices en un seul.
1- Utiliser une table de table
C'est peut-être la plus utilisée, car à mon avis la plus évidente.
Il s'agit d'une table où chaque élément est une autre table.
Par exemple, vous pouvez créer une matrice de 1 à n dimensions par m avec le code suivant:
matrice = {} -- création de la matrice ( c'est tout simplement une table ) for i = 1, n do matrice[i] = {} -- création d'un nouveau rang for j = 1, m do matrice[i][j] = valeur -- création d'une case à l'intérieure du rang end end
Et pour remplir le tableau donné en exemple ci-dessus:
local tablePrincipale = {} -- création de la table local nbLignes = 3 local nbColonnes = 7 for ligne = 1, nbLignes do tablePrincipale[ligne] = {} -- création d'une nlle ligne for colonne = 1, nbColonnes do tablePrincipale[ligne][colonne] = tostring(ligne)..tostring(colonne) end end
Ce qui donnerait:
Col 1 | Col 2 | Col 3 | Col 4 | Col 5 | Col 6 | Col 7 | |
Ligne 1 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
Ligne 2 | 21 | 22 | 23 | 24 | 25 | 26 | 27 |
Ligne 3 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
tostring(x), est une fonction de base Lua, qui comme sont nom l'indique, transforme x en chaîne de caractères.
tonumber(y), est son contraire et transforme y en nombre. (si cela est possible!)
Puisqu'avec LUA, les tables sont des objets, vous devrez créer les rangées de façon explicite.
L'exemple précédent, pourrait s'écrire de la façon suivante:
2- Rassembler les 2 indices en un seul
Si les deux indices sont des entiers, vous pourrez multiplier le premier par une constante, puis ajouter le second: Reprenez l'exemple précédent.
mt = {} -- création de la matrice ( c'est une table ) for i = 1, n do for j = 1, m do mt[i*m + j] = 0 end end
Si les indices sont des chaînes, vous pourrez créer un indice unique en concaténant de deux indices et en les séparant par un caractère.
Soit une matrice mt et 2 indices s et t ---> mt[s..":"..t] ou mt["s:","t"].