[英]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.