有些运算符在Lua中是不允许的。

我在将 Lua 实现到我的 C++ 项目中时遇到了一个非常奇怪的问题。由于某种原因,它不允许执行包含运算符 #:%(还有一些不太重要的)的脚本。

在结果中...

我需要使用 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

点赞
用户258523
用户258523

The length operator是Lua 5.1的一个新增特性,在Lua 5.0中并不存在。

同样,默认字符串元表似乎也是Lua 5.1的新增特性。

可以将Lua 5.0中的luaopen_string的实现与Lua 5.1中的luaopen_string进行比较。

类似地,取模运算符也是一个5.1的新增特性。比较5.0手册中的算术操作符部分和5.1手册中的部分。

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

2015-02-23 20:46:04