Lua:遍历嵌套表



我试图在lua中迭代表,但不知何故,我无法打印表中的值。它打印地址

SeriesPoint = {}
function SeriesPoint:new(x, y)
local newSeriesPoint = {}
setmetatable(newSeriesPoint, self)
self.__index = self
self.x = x
self.y = y
return newSeriesPoint
end
TestSeriesPoint = {}
table.insert(TestSeriesPoint , SeriesPoint:new(1,2))
table.insert(TestSeriesPoint , SeriesPoint:new(3,4))
table.insert(TestSeriesPoint , SeriesPoint:new(5,6))
table.insert(TestSeriesPoint , SeriesPoint:new(7,8))
table.insert(TestSeriesPoint , SeriesPoint:new(9,10))
for k,v in ipairs(TestSeriesPoint)
print(k)
print(v)
end

====================================

Output is : 
1
table: 0x55a66a277f20
2
table: 0x55a66a276e20
3
table: 0x55a66a276e90
4
table: 0x55a66a276f20
5
table: 0x55a66a276f60

当我尝试使用下面的for循环时,

for k,v in ipairs(TestSeriesPoint) do
print(v.x)
print(v.y)
end

我的输出是:

9
10
9
10
9
10
9
10
9
10

有人能告诉我在循环中打印正确值的正确方法吗

对于第一个循环,v变量是表,因为您正在插入从新函数返回的表你在做self.x=x和self.y=y,因为你索引了self.并定义了self.x和self.y最后是9和10,所以它打印了9和10你应该做newSeriesPoint.x=x和newSeriesPoint.y=y

最新更新