Lua 多维表函数调用

我在 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'])

我却得到空值。在调用表时将字符串与变量混合使用是否被允许?我想知道我哪里出错了。

点赞
用户7066323
用户7066323

看起来 Lua 不接受像这样的语句:

arr = { "string" = "value"}

所以,你可以这样写:

arr = { string = "value"}

或者:

arr = {["string"] = value}

这样,为了在 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)

希望对你有所帮助...

2017-01-07 23:19:49