Lua多维table调用

Lua multidimensional table call

我似乎在 Lua 上遇到了多维表(数组?)的问题。我有一个看起来像这样的:

arr =
{
  "stats" = {
         "23" = {
                "1" = { 
                  "account_id" = "10",
                  "info" = {
                            "name" = "john"
                           }
                      }
                 }
             }
}

每当我尝试使用以下方式访问某些信息时:

local entry = "23"
print(arr['stats'][entry]['1'])

print(arr['stats'][entry]['1']['info']['name'])

我得到 nil 值,是否允许在调用表时将字符串与变量混合?知道我做错了什么吗?

好像lua不接受像

这样的东西
arr = { "string" = "value"}

所以,要么

arr = { string = "value"}

或者你

arr = {["string"] = value}

这样,您的 table 必须重写为这样,以便 运行 在 lua 5.3 解释器上:

arr =
{
   stats =
   {
      ["23"] = 
      {
        ["1"] =
        {
          account_id = "10",
          info = 
          {
            name = "john"
          }
        }
      }
   }
}

这样做,你的线路

print(arr['stats'][entry]['1']['info']['name'])

运行没问题。

此外,在可以使用点的情况下使用括号也不是好的做法。这并不是说您的脚本不会 运行 否则,但是如果您像这样编写该行,代码会变得更加清晰易懂并且更容易调试:

print(arr.stats[entry]['1'].info.name)

希望对您有所帮助...