我的 C++ 项目中的 Lua 实现遇到了一个非常奇怪的问题。出于某种原因,它不允许执行包含操作符的脚本,例如 #
、:
、%
(以及更多,不太重要的) .
在结果中...
我需要使用 for i = 1, table.getn(tbl) do
而不是 for i = 1, #tbl do
。
我需要使用 string.gsub(str, [..])
而不是 str:gsub([..])
。
等等...寻找解决方法真的很烦人。
我的第一个想法是编码。我尝试了多种常见编码,但都没有用。
我遇到的错误:
当使用 str:gsub([..])
而不是 string.gsub(str, [..])
时:
attempt to index global `str' (a string value)
当使用 #tbl
而不是 table.getn(tbl)
时:
unexpected symbol near `#'
可能是什么问题?我会感谢每一个解决方案,因为我没有想法。
规范:
Lua版本:
#define LUA_VERSION "Lua 5.0.3"
C++11, FreeBSD 10
最佳答案
The length operator是 lua 5.1 的补充。它在 lua 5.0 中不存在。
同样,默认的字符串元表似乎是 lua 5.1 添加的。
比较luaopen_string
的lua 5.0实现到 luaopen_string
的 lua 5.1 实现.
同样(再次)模运算也是 5.1 加法。比较 5.0 manual
的 算术运算符
部分和 `5.1 manual1 .
5.1 手册部分包含运算符的定义,因此您可以自己实现它(或改用您需要的任何其他定义)。
关于c++ - 一些运算符是 Lua 不允许的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682740/