尝试在lua中打印表格

时间:2019-04-12 11:36:34

标签: linux lua

我正在尝试在lua中将以下内容打印为输出。

inertia_x = {
{46.774, 0., 0.},
{0., 8.597, 0.},
{0., 0., 50.082}
}

x = {mass = 933.0, com = {0.0, 143.52, 0.0}, inertia_x}

print(x)

这段代码是用文本编辑器编写的,名为sample.lua

现在我正在使用linux,并且在存储.lua文件并调用时转到正确的目录

$ lua sample.lua

,输出为表:0x55c9fb81e190

理想情况下,我希望像列表一样打印x

这是我在Hello World之后的第二个lua程序。对Linux和编程来说都是非常新的。

非常感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

例如:

for key, value in pairs(yourTable) do
    print(key, value)
end

如果您需要处理嵌套表,请使用:

if type(value) == "table" then
    -- Do something
end

我将保留上面的元素,并做一个递归函数来转储嵌套表,作为练习。

答案 1 :(得分:0)

您需要检测表并以递归方式建立表转储。试试这个:

local inertia_x = {
{46.774, 0., 0.},
{0., 8.597, 0.},
{0., 0., 50.082}
}

local x = {mass = 933.0, com = {0.0, 143.52, 0.0}, inertia_x}

local function dump (  value , call_indent)

  if not call_indent then 
    call_indent = ""
  end

  local indent = call_indent .. "  "

  local output = ""

  if type(value) == "table" then
      output = output .. "{"
      local first = true
      for inner_key, inner_value in pairs ( value ) do
        if not first then 
          output = output .. ", "
        else
          first = false
        end
        output = output .. "\n" .. indent
        output = output  .. inner_key .. " = " .. dump ( inner_value, indent ) 
      end
      output = output ..  "\n" .. call_indent .. "}"

  elseif type (value) == "userdata" then
    output = "userdata"
  else 
    output =  value
  end
  return output 
end

print ( "x = " .. dump(x) )

答案 2 :(得分:0)

好的,首先感谢大家发布您的建议和答案。

在Lua中打印列表基本上看起来很繁琐。使用Python或MATLAB会更容易。我想如果您可以在Lua脚本中轻松编写列表,则没有必要尝试再次将其打印为输出。但是我想像我这样的初学者可能会遇到这些问题。

我可以看到在Lua中轻松创建模型的用途,并在建立刚体模型时在Meshup中将它们可视化。

谢谢大家!:)