LoriotPro Extended Edition Documentation language LUA

TDM


Fonction des tableaux

La plupart des fonctions des tableaux supposent que les tableaux représente une rangée ou une liste. Pour ces fonctions, un concept important est la taille de la rangée. Il y a trois manières d'indiquer cette taille :

table.concat(table [, sept [, I [, j ] ] ])

Enchaînez les éléments d'une table ensemble pour former une corde. Chaque élément doit pouvoir être contraint dans une corde. On peut indiquer un séparateur qui est placé entre les éléments enchaînés. En plus une gamme peut être indiquée dans la table, commençant i- élément de Th et finir au j- à l'élément de Th.

> = table.concat({ 1, 2, "three", 4, "five" })  12three4five  
> = table.concat({ 1, 2, "three", 4, "five" }, ", ") 1, 2, three, 4, five
> = table.concat({ 1, 2, "three", 4, "five" }, ", ", 2) 2, three, 4, five
> = table.concat({ 1, 2, "three", 4, "five" }, ", ", 2, 4) 2, three, 4

Nous ne pouvons pas joindre des tables ensemble parce qu'ils ne peuvent pas être contraints dans des chaînes de caractères . Voyez la section sur les chaînes de caractères pour plus d'information sur la coercition.

> = table.concat({ 1,2,{} })
stdin:1: bad argument #1 to `concat' (table contains non-strings)
stack traceback:
[C]: in function `concat'
stdin:1: in main chunk
[C]: ?

table.foreach(table, f)

Appliquez-vous la fonction f aux éléments de la table passée. Sur chaque itération la fonction f est passée la paire de clef-valeur de cet élément dans la table.

> table.foreach({1,"two",3}, print)
-- print the key-value pairs
1 1
2 two
3 3

> table.foreach({1,"two",3,"four"}, function(k,v)
print(string.rep(v,k)) end)
1
twotwo
333
fourfourfourfour

Si la fonction f renvoie a non-nil évaluez la boucle d'itération se termine.

> table.foreach({1,"two",3}, function(k,v)
print(k,v) return k<2 and nil end)
1 1
2 two

Les Tableaux peuvent contenir les éléments mélangés de clef-valeur et d'index-valeur. table.foreach() montrera tous les éléments dans une table. Pour montrer seulement les éléments d'index-valeur voyez table.foreachi(). Pour plus d'informations sur ce sujet voyez la section sur les Tableaux.

> t = { 1,2,"three"; pi=3.14159, banana="yellow" }  
> table.foreach(t, print)
1 1
2 2
3 three
pi 3.14159
banana yellow

table.foreachi(table, f)

Appliquez-vous la fonction f aux éléments de la table passée. Sur chaque itération la fonction f est passée la paire d'index-valeur de cet élément dans la table. C'est semblable table.foreach() sauf que des paires d'index-valeur ne sont passées, pas des paires de clef-valeur. Si la fonction f renvoie a non-nil évaluez la boucle d'itération se termine.

> t = { 1,2,"three"; pi=3.14159, banana="yellow" }
> table.foreachi(t, print)
1 1
2 2
3 three

La note dans l'exemple seulement les éléments classés de la table sont montrées. Voyez la section sur les tableaux pour plus d'information sur des paires de clef-valeur et d'index-valeur.

table.getn(table)

Ceci est employé pour déterminer la taille d'une table. La taille d'une table est discutée au dessus de cette page.


> = table.getn({1,2,3}) -- Lua comptera les éléments si
aucune taille n'est indiquée 3 > = table.getn({1,2,3 ; n=10})
-- la note, n dépasse compter les éléments 10 > t = {1.2.3} >
table.setn(t, 10) -- a placé notre propre taille avec le setn() > =
table.getn(t) 10 > = table.getn({1,2,3,nil,5,6}) -- ordonnance des
extrémités à l'élément 3 dû à la valeur de zéro à 4 3

table.sort(table [, élém. ])

Assortissez les éléments d'une table sur place (c.-à-d. changez la table).

> t = { 3,2,5,1,4 }  > table.sort(t)  
> = table.concat(t, ", ")
-- display sorted values 1, 2, 3, 4, 5

Si la table a une taille indiquée seulement la gamme indiquée est assortie, par exemple,

> t = { 3,2,5,1,4; n=3 }
-- construct a table with user size of 3
> table.sort(t) -- sort will be limited by user size
> = table.concat(t, ", ")
-- only specified size is concatenated as well 2, 3, 5

Une fonction de comparaison peut être fournie pour adapter assortir d'élément. La fonction de comparaison doit renvoyer une valeur booléenne indiquant si le premier argument devrait être avant le deuxième argument dans l'ordre. Le comportement de défaut est pour que < la comparaison soit faite. Par exemple, ce qui suit se comporte les mêmes qu'aucune fonction étant fournie :

> t = { 3,2,5,1,4 }
> table.sort(t, function(a,b) return a<b end)
> = table.concat(t, ", ") 1, 2, 3, 4, 5

Nous pouvons voir si nous renversons la comparaison que l'ordre d'ordre est renversé.

> table.sort(t, function(a,b) return a>b end)  
> = table.concat(t, ", ")
5, 4, 3, 2, 1

table.insert(table, [ position, ] valeur)

Insérez une valeur donnée dans une table. Si une position est donnée à insertion la valeur avant l'élément actuellement à cette position :

> t = { 1,3,"four" }  > table.insert(t, 2, "two")  
-- insert "two" at position before element 2
> = table.concat(t, ", ")
1, two, 3, four

Si aucune position n'est indiquée nous apposons la valeur à l'extrémité de la table :

> table.insert(t, 5)         
-- no position given so append to end
> = table.concat(t, ", ")
1, two, 3, four, 5

Quand une table a un élément a inséré la taille de la table et les index d'élément sont mis à jour :

> t = { 1,"two",3 } -- create a table
> = # t -- find current size
3
> table.foreach(t, print) -- display the table contents
1 1
2 two
3 3
> table.insert(t, 1, "inserted")
-- insert an element at the start > = table.concat(t, ", ")
-- see what we have inserted, 1, two, 3
> = # t -- find the size 4 > table.foreach(t, print)
-- the indexes have been updated
1 inserted
2 1
3 two
4 3

Quand aucune position n'est indiquée l'élément est inséré à l'extrémité de la table selon la taille calculée. La taille d'une table peut être utilisateur indiqué et ne pas refléter le nombre d'éléments, par exemple,

> t = { 1,"two",3; n=10 }  -- create a table with user size  
> table.insert(t, "end") -- insert with no position inserts at "end"
> table.foreach(t, print) -- display the table contents
1 1
2 two
3 3
11 end
n 11

table.remove(table [, position ])

Enlevez un élément d'une table. Si une position est indiquée l'élément à celle la position est enlevée. Les éléments restants sont réindexés séquentiellement et la taille de la table est mise à jour pour refléter le changement. L'élément enlevé est retourné par cette fonction. Par exemple,

> t = { 1,"two",3,"four" }   -- create a table  
> = # t -- find the size 4
> table.foreach(t, print) -- have a look at the elements
1 1
2 two
3 3
4 four
> = table.remove(t,2) -- remove element number 2 and display it two
> table.foreach(t, print) -- display the updated table contents
1 1
2 3
3 four
> = # t -- find the size
3

Si aucune position n'est donnée enlevez le dernier élément dans la table qui est indiquée par la taille de la table. Par exemple,

> t = { 1,"two","three" }
> = # t -- find the table size (which is removed)
3
> table.foreach(t, print) -- display contents
1 1
2 two
3 three
> = table.remove(t) -- remove the element at position "n" three
> table.foreach(t, print) -- display updated contents
1 1
2 two
> = # t -- display new size
2

Si la taille de la table ne reflète pas le nombre d'éléments rien n'est enlevé, par exemple,

> t = {1,2,3} > table.setn(t,10) -- set user size
> table.foreach(t, print) -- display table contents, note size "n" is stored internally
1 1
2 2
3 3
> = # t -- find the size
10
> = table.remove(t) -- remove last element nil
> = # t -- find the updated size
9
> table.foreach(t, print) -- display elements
1 1
2 2
3 3

table.setn(table, n)

Placez la taille d'une table (voir les notes sur la taille de table et le dessus de cette page). Si la table a une valeur "n" elle est mise à jour, par exemple,

> t = {1, "two", "trois" ; n=10} -- créez une table qui a une taille d'utilisateur indiquée
> = table.getn(t) -- a lu la taille 10
> table.foreach(t, copie) -- montrez les éléments du tableau
1 1
2 deux
3 trois n 10
> table.setn(t, 12) -- emploie le setn pour changer la taille
> = table.getn(t) -- montrez la taille
12
> table.foreach(t, copie) -- montre le contenu
1 1
2 deux
3 trois
n 12

Si la table n'a aucun élément avec la clef n la taille de la table est tenue intérieurement.

> t = {1, "two",3,4} -- pas "n"
> = table.getn(t) -- calculez la taille du tableau 4
> table.setn(t, 10) -- placez la taille à une valeur définie par utilisateur
> = table.getn(t) -- trouvent la taille 10
> table.foreach(t, copie) -- regardez le contenu
1 1
2 deux
3 3
4 4



www.loriotpro.com