【问题标题】:Item within a table LuaLua 表中的项目
【发布时间】:2017-07-26 03:19:14
【问题描述】:

所以我有一个使用 Lua 的表,其中有一个变量,但由于它的名称,我不知道如何访问它。我可以使用json.prettify( _id ) 来查看表格中的内容。我想要的只是此表中的id,但由于它的命名方式,我似乎无法获得_id 中的内容,我都尝试了

_id[1] 但这 == nil
_id.$oid 但这给了我一个运行时错误

打印回复:_id = {
 "$oid":"597015b757203b04d6941d45"
}

有趣的是#_id == 0

【问题讨论】:

  • 试试local _, value = next(_id)

标签: lua coronasdk


【解决方案1】:

使用

tableName[ 'variableName' ]

或

tableName.variableName

注意:有时你不能同时使用这两种形式,例如:

tableName[ 'name with spaces' ] -- ok

tableNames.name with spaces -- error

我认为运算符# 不能用于非索引表。

【讨论】:

  • # 运算符仅计算表的“数组”组件中的项目,但仍可用于任何表。这意味着#({5, 3, ["Item"] = true}) 将返回 2,而不是 3,因为 Lua 只计算表的数组部分。
  • 再次感谢您!第一个选项有效,当我尝试 _id.$oid 时,'$' 符号是导致运行时错误的原因
【解决方案2】:

您需要将 json 字符串解码为 Lua 表并以任何方式获取值:

local   json = require("json")

local  str = [[ { "$oid":"597015b757203b04d6941d45" } ]]

local t_res= json.decode(str)

-- access
print( t_res["$oid"] )
-- or 
local k,v = next(t_res)
print( v )
-- or
for k, v in pairs(t_res) do
  print(v)
  break 
end

PS:Lua 运算符 # 仅适用于常规数组,具有非 nil 值。

【讨论】:

    【解决方案3】:

    为了克服变量名称包含“$”符号这一事实,在表中获取变量的正确方法是使用:

    _id['$oid'],这行得通。

    _id.$oid 给出了运行时错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-30
      • 2021-11-23
      • 2013-07-11
      • 2021-12-02
      • 2016-12-28
      • 2020-08-28
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多