繁体   English   中英

lua的loadstring()不适用于表

[英]lua's loadstring() not working with tables

我有一些文本,我正在尝试通过加载字符串加载它。 以下作品:

local m = loadstring("data = 5")()

但是,当数据是表时,它将不起作用,并显示错误“试图调用nil”

local m = loadstring("data = { 1 = 10}")()

lua中的表声明要求将整数键放在方括号内:

data = {
  [1] = value,
}

始终允许将键括在方括号中,并且是可能的。 如果您的密钥遵循以下模式,则可以跳过它: [A-Za-z_][A-Za-z0-9_]* (与lua中的有效变量名相同)

如果添加了assert您将获得更多有用的消息:

local m = assert (loadstring("data = { 1 = 10}"))()

结果:

stdin:1: [string "data = { 1 = 10}"]:1: '}' expected near '='
stack traceback:
    [C]: in function 'assert'
    stdin:1: in main chunk
    [C]: ?

要真正回答这个问题,除非表键碰巧遵循Lua变量命名规则,否则必须将其放在方括号内,例如。

local m = assert (loadstring("data = { [1] = 10}"))()

当我这样做时,我仍然是零

那有什么关系 loadstring完成。

只要这样做:

assert (loadstring("data = { 1 = 10}"))()
print (data [1])

您不需要变量m loadstring将表放入data -这很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM