为什么这个Lua表中只有4个字段?不应该有7?
polyline = {color="blue", thickness=2, npoints=4,
{x=0, y=0},
{x=10, y=0},
{x=-10, y=1},
{x=0, y=1}
}
print(table.maxn(polyline)) -- returns 4. Why?
print(polyline[2].x) -- returns 10. Why?
我认为polyline[2]
将索引为“thickness”,这是此表中的第二个字段。
答案 0 :(得分:9)
也许你应该重读table constructor operator manual。总而言之,表中的命名字段(即颜色,厚度,npoints)没有指定任何数字索引,只有名称。如果省略名称,则会生成基于1的索引。您对polyline
的定义与此相同:
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}
}
这解释了print(polyline[2].x)
的输出(同样,Lua表中的表字段没有任何排序;允许pairs
以任何顺序枚举它们)。至于table.maxn
:
[table.maxn]返回最大的正数 给定表的索引,如果是,则为零 该表没有正数 指数。 (为了完成这项功能 对整体进行线性遍历 表。)
所以输出又是正确的。该表确实包含7个字段,但table.maxn
根本不返回字段总数。