我的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
答案 0 :(得分:7)
The length operator是lua 5.1的补充。它在lua 5.0中不存在。
同样,默认字符串metatable似乎是lua 5.1添加。
将luaopen_string
的lua 5.0实现与luaopen_string
的lua 5.1实现进行比较。
类似地(再次)模运算也是5.1加法。比较5.0 manual
和`5.1 manual1的Arithmetic Operators
部分。
5.1手册部分包括操作员定义的内容,以便您自己实现(或使用您需要的任何其他定义)。