c++ - 一些运算符是 Lua 不允许的

标签 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

最佳答案

The length operator是 lua 5.1 的补充。它在 lua 5.0 中不存在。

同样,默认的字符串元表似乎是 lua 5.1 添加的。

比较luaopen_string的lua 5.0实现到 luaopen_string 的 lua 5.1 实现.

同样(再次)模运算也是 5.1 加法。比较 5.0 manual算术运算符 部分和 `5.1 manual1 .

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

关于c++ - 一些运算符是 Lua 不允许的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28682740/

相关文章:

c++ - 隐藏 constexpr 计算的最佳方法

c++ - 在类中使用 Cin 访问私有(private)成员

c++ - 我无法在 qt 中向可执行文件添加图标

c++ - C++/C 中是否有任何有效的构建函数可以快速均匀地采样 b 个条目而不用替换 n 个条目?

c++11 - 在现代 C++ 中重载算术运算符的 "best"方法是什么?

具有可变数量键的 Lua 访问表

c++ - 字符串到整数的精确哈希函数

c++ - 堆栈模板参数

ios - 使用 LUA 的 Cocos2dx iOS 项目

arrays - lua中从数组中获取值