Vous devriez peut-être relire le table constructor operator manual. Pour résumer, les champs nommés dans la table (c'est-à-dire la couleur, l'épaisseur, les npoints) n'ont aucun index numérique assigné, juste le nom. Si vous omettez le nom, un index basé sur 1 est généré. Votre définition de polyline
est équivalent à celui-ci:
polyline = {
color="blue", thickness=2, npoints=4,
[1] = {x=0, y=0},
[2] = {x=10, y=0},
[3] = {x=-10, y=1},
[4] = {x=0, y=1}
}
Ceci explique la sortie de print(polyline[2].x)
(également, les champs de table dans les tableaux Lua n'ont pas la commande, pairs
est autorisé à les énumérer dans l'ordre). En ce qui concerne table.maxn
:
[table.maxn] Renvoie le plus grand indice numérique positif de la table donnée, ou zéro si la table n'a pas numérique indices positifs. (Pour faire son travail cette fonction effectue un passage linéaire de toute la table .)
Ainsi, la sortie est à nouveau, correct. La table contient vraiment 7 champs, mais table.maxn
ne renvoie pas le nombre total de champs du tout.