尝试在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

输出是:table: 0x55c9fb81e190

我希望获得像列表一样打印的x

这是我的第二个lua程序,在Linux和编程上非常新。

我非常感谢您的帮助!

点赞
用户4403144
用户4403144

例如:

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

如果你需要处理嵌套表,可以使用:

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

我将把这些元素留作练习,编写一个递归函数来转储嵌套表。

2019-04-12 13:20:31
用户11193505
用户11193505

你需要检测表格并递归地构建表格转储。尝试这个:

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) )
2019-04-12 14:18:28