Lua表不可访问(尝试索引空值)

我有一个看起来像这样的表:

{
  block_0 = {
    hash = "98d1a61c4e3d6394b2970a2a5c44ec2caf172ad5c6844b114867b31fa528220e",
    index = 0
  }
}

我应该能够通过 chain ["block_0"]["hash"] 来访问 block_0indexhash 值,对吗?但它不起作用。当我使用这行时,我会得到错误 attempt to index a nil value (field 'block_0')。我该如何正确地访问 hashindex

编辑:这里有更多的上下文信息:

function add_thing()
  block_name = "block_0"
  block = { }
  block[block_name] = { }
  block[block_name]["hash"] = ""
  block[block_name]["index"] = ""
  block[block_name]["hash"] = "这是一个测试哈希"
  block[block_name]["index"] = 10
  return block
end

chain = { }
table.insert(chain, add_thing())
require 'pl.pretty'.dump(chain)
点赞
用户1944004
用户1944004

你将 add_thing 的返回值插入到了 chain 中,因此 chain 现在是一个嵌套的 table。要索引正确的字段,你需要先索引 chain,即 chain[1]["block_0"]["hash"]。我怀疑这不是你想要的行为,你可能想要做以下操作:

local function add_thing(chain)
  local block_name = "block_0"
  chain[block_name] = {
    hash = "this is a test hash",
    index = 10
  }
end

local chain = {}
add_thing(chain)
print(chain["block_0"]["hash"]) -- this is a test hash

在线运行

这将按预期工作,因为表是引用类型。

2018-07-18 00:52:36