Lua中loadstring的使用
引子
将一个table类型的字符串转成table!
例如:"{id = 1, num = 666}"->{id = 1, num = 666}
分析
如果暴力解析这个字符串,也是可以将这个table解析出来的,但是这种做法太莽了,当table的结构比较复杂的时候,就有点蛋疼了!
使用loadstring就优雅多了,一行代码搞定!
实现
-- Hello 1024 !
local tblStr = "{id = 1, num = 666}"
local tbl = assert(loadstring("return " .. tblStr))()
for k, v in pairs(tbl) do
print(k, v)
end
--[[
num 666
id 1
]]
溯源
loadstring的用法:将传入的代码块编译好之后以函数的形式返回!所以loadstring的返回值是一个function,如果传入的代码块有语法错误则返回nil!
e.g.
func = loadstring("return {id = 1, num = 666}")
func()
等价于:
func = function()
return {id = 1, num = 666}
end
func()
ps
1、loadstring在从lua5.3开始就被干掉了,直接用load即可!
2、lua执行器(lua.exe)下载:进入URL选择对应的版本,然后进入Tools Executables找到对应平台的压缩包下载即可!