为什么这个类的函数在lua中不能正常工作?

时间:2018-11-15 11:16:33

标签: lua

我在lua中运行此代码:

cal = {num1 = 0, num2 = 0, num3 = 0,num4 = 0,num5 = 0,num6 = 0}
function cal:new (n1,n2,n3,n4,n5,n6)
    local self = {}
    setmetatable(self,cal)
    self.num1 = n1
    self.num2 = n2
    self.num3 = n3
    self.num4 = n4
    self.num5 = n5
    self.num6 = n6
    return self
end
ea = cal:new(1,2,3,4,5,6)

ae = cal:new(7,8,9,10,11,12)

for k,va in pairs(ea) do print(va) end
for k,va in pairs(ae) do print(va) end

这是输出:

  

1
2
5
6
3
4
7
8
11
12 < br /> 9
10

为什么这个数字被弄乱了??

2 个答案:

答案 0 :(得分:1)

pairs以未指定的顺序遍历表。

manual

  

即使对于数字索引,也未指定索引的枚举顺序。

(在next所基于的pairs条目中。)

答案 1 :(得分:0)

Lua不会以任何特定顺序存储表键。一种顺序打印字段的方法是添加另一种方法:

function cal:print()
  print(self.num1)
  print(self.num2)
  print(self.num3)
  print(self.num4)
  print(self.num5)
  print(self.num6)
end