2015-02-23 25 views
1

我有一個非常奇怪的問題與我的C++項目的Lua實現。出於某種原因,它不允許包含#,:,%(以及更重要,更不重要)等運算符的腳本被執行。一些運營商是不允許的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

+0

'%'怎麼樣? – 2015-02-23 20:46:01

+0

@EtanReisner它根本就不起作用。例如。當做'%2 == 0'我需要解決這個問題(這個人在這裏有類似的問題http://stackoverflow.com/questions/9695697/lua-replacement-for-the-operator)。 Btw。更新我的問題,並添加錯誤,我回來了。 – Lucas 2015-02-23 20:49:20

+0

'%'*運算符*是Lua中相對較新的一個,在5.1中添加。 – 2015-02-23 20:50:53

回答

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 manualArithmetic Operators部分和`5.1 manual1

5.1手冊部分包含了操作符定義的內容,因此您可以自己實現它(或者使用您需要的任何其他定義代替)。

+0

謝謝你。我會更新我的Lua版本,然後:-) – Lucas 2015-02-23 20:53:05