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 手册部分包括运算符的定义,因此您可以自己实现它(或使用您需要的任何其他定义)。
我的 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 手册部分包括运算符的定义,因此您可以自己实现它(或使用您需要的任何其他定义)。