Lua 不允许某些运算符

Some operators are not allowed by Lua

我的 C++ 项目中的 Lua 实现遇到了一个非常奇怪的问题。出于某种原因,它不允许执行包含 #:%(以及更多但不太重要)等运算符的脚本。

在结果中...

我需要使用 for i = 1, table.getn(tbl) do 而不是 for i = 1, #tbl do

我需要使用 string.gsub(str, [..]) 而不是 str:gsub([..])

等等...寻找解决方法真的很烦人。

我的第一个想法是编码。不过,我尝试了多种常见编码,并且 none 有效。

我遇到的错误:

当使用 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 to the lua 5.1 implementation of luaopen_string 的 lua 5.0 实现。

同样(再次)模运算也是 5.1 加法。比较 5.0 manual and the `5.1 manual1.

Arithmetic Operators 部分

5.1 手册部分包括运算符的定义,因此您可以自己实现它(或使用您需要的任何其他定义)。