Syntax Lua,表格转换成数字了吗?
我只是简单地把数字加在一起,但它仍然会出错。我使用Syntax Lua,表格转换成数字了吗?,syntax,lua,lua-table,Syntax,Lua,Lua Table,我只是简单地把数字加在一起,但它仍然会出错。我使用type()检查vector是否是一个表,它总是说它是一个表,但它继续说它是一个数字 有人能告诉我为什么会发生这种情况以及解决方法吗(变量vector是vector3对象)?非常感谢您的帮助 矢量3: function new(x, y, z) return setmetatable({x = x, y = y, z = z}, meta) --{} has public variables end 此处的所有矢量3文件: 错误: 尝试索引
type()
检查vector
是否是一个表,它总是说它是一个表,但它继续说它是一个数字
有人能告诉我为什么会发生这种情况以及解决方法吗(变量vector
是vector3对象)?非常感谢您的帮助
矢量3:
function new(x, y, z)
return setmetatable({x = x, y = y, z = z}, meta) --{} has public variables
end
此处的所有矢量3文件:
错误:
尝试索引本地“向量”(数值)
脚本:
function translate(object, x, y, z)
for i, v in pairs(object) do
if (i == "Vertices") then
for _, q in pairs(v) do
for l, vector in pairs(q) do
vector.x = vector.x + x;
vector.y = vector.y + y;
vector.z = vector.z + z;
end
end
end
end
end
让我们通过删除循环开关反模式来重构代码:
function translate(object, x, y, z)
for _, q in pairs(object.Vertices) do
for l, vector in pairs(q) do
-- Test the type of vector here...
vector.x = vector.x + x;
vector.y = vector.y + y;
vector.z = vector.z + z;
end
end
end
因此,访问object.Vertices[\u][l].x时会发生错误
这将是一个奇怪的顶点列表,其中包含顶点列表的列表。您在哪里使用type
检查代码中的类型?您认为您可以想出一个更小的、自包含的示例吗?链接可能会在未来腐烂,100行是一个更大的一面有点快看。我猜您会在最内层范围的第一行得到错误。您确定object.Vertices
包含点列表,而不仅仅是点列表吗?另外,我确信,这是循环开关反模式到Lua.Deduplicator的一个很好的转换。我在第二和第三对循环中都使用了type()
。并且,object.Vertices
包含包含x、y和z坐标的向量3(表)。