我正在尝试从Lua将表加载到C++中。该文件的外观如下:
function alma(arg)
print(arg)
end
sometable = {
num = 5,
text = "this is a string",
nested = {
{"a", alma("argument")},
{"table", alma("arg")},
{"element", alma("asd")}
}
}
如果我调用
luaL_loadfile
,我只会得到块。如果我调用lua_dofile
,我得到了元素,但是alma函数针对每个元素运行。在this SO线程中,有人说将这些东西包装到函数中,然后调用该函数以获取数据。当我包装/调用该函数时,我调用 setter/getter 的那三个Alma函数就会运行。如何在不执行alma函数的情况下获取sometable
及其元素? 最佳答案
好的,您需要稍后调用的函数。只需保存该功能的值(value)即可,即只需写下其名称即可:
nested = {
{"a", func_argument},
{"table", func_arg},
{"element", func_asd}
}
但是您想调用相同的函数,并传递参数。您希望将该信息另存为函数。因此,要么直接在表中定义一个函数,要么调用某个将返回另一个函数的函数,并将其args存储在闭包中:
-- function to be called
function alma(arg)
print(arg)
end
-- define functions in table
nested1 = {
{"a", function() alma "argument" end},
{"table", function() alma "arg" end},
{"element", function() alma "asd" end}
}
-- or create function within another function
function alma_cb(name)
return function() alma(name) end
end
nested2 = {
{"a", alma_cb "argument"},
{"table", alma_cb "arg"},
{"element", alma_cb "asd"}
}
关于c++ - 加载Lua文件并使用变量而不执行功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41650231/