gpt4 book ai didi

c++ - lua的表模拟

转载 作者:行者123 更新时间:2023-11-30 03:07:13 24 4
gpt4 key购买 nike

美好的一天

我有一个特定的任务是让 c++ std::map 访问 lua 脚本。所需的脚本语法是 glob["tag"] = "value"或 glob("tag") = "value"

在研究中,尝试过luabind绑定(bind)

std::string & glob(const std::string &tag)
{
static std::string value;
return value;
}

...

luabind::module(&state)
[
def("glob", &glob, luabind::return_reference_to(result))
]

但是在运行下面列出的脚本之后

glob("tag") = "asdasd"
print(glob("tag"))

得到错误 [string "glob("tag") = "asdasd"..."]:1: '=' 附近出现意外符号

所以,我在等待您的建议和意见。

谢谢

更新2lhf:全局变量数据通过 C++ 部分存储和序列化,必须从 lua 访问。luaState 是在每次脚本执行时创建的,并且在执行之间不存在。解决方案之一是在脚本执行前创建并填充全局变量表,并在执行后将其与 map 同步,但是,我认为它已经足够慢了。因此,我们将不胜感激通过具有上述语法的 c 函数进行访问。

最佳答案

glob("tag") = "asdasd" 永远无法工作,因为它不是有效的 Lua 语法。 glob["tag"] = "value" 可以工作。您需要将 glob 设置为具有 indexnewindex 元方法的用户数据。我对 luabind 一无所知,所以我无法帮助你。但是使用标准的 Lua API 并不难。我只是想知道 为什么 你需要将 C++ map 导出到 Lua,而 Lua 已经有很好的关联数组。

关于c++ - lua的表模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5952409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com