Lua不允许某些运营商

时间:2015-02-23 20:24:05

标签: c++ c++11 lua symbols

我的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

1 个答案:

答案 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 manual1Arithmetic Operators部分。

5.1手册部分包括操作员定义的内容,以便您自己实现(或使用您需要的任何其他定义)。