手冊第七章 |
|
這裡呈現從 Lua 5.0 程式碼移轉至 Lua 5.1 時會遭遇到的不相容性。您可以透過使用適當選項編譯 Lua(請參閱檔案 luaconf.h
)來避免大部分不相容性。儘管如此,所有相容性選項都將在 Lua 的下一個版本中移除。
arg
(一個包含額外參數的表格)變更為「變數參數」表達式 ...
。(請參閱 luaconf.h
中的編譯選項 LUA_COMPAT_VARARG
。)
for
和 repeat
的隱式變數範圍發生了細微的更動。
[[字串]]
)的語法不再允許遞迴包含。您可以在此情況下使用新的語法 [=[字串]=]
。(請參閱 luaconf.h
中的選項 LUA_COMPAT_LSTR
。)
string.gfind
已更名為 string.gmatch
。(請參閱 luaconf.h
中的選項 LUA_COMPAT_GFIND
。)
string.gsub
的第三個參數為函式,而且函式傳回 nil
或 false
時,取代項目為完整的「匹配」項,而非空白字元串。
table.setn
已不再使用。函式 table.getn
對應到新的長度運算子(#
),您應使用該運算子而非該函式。(請參閱 luaconf.h
中的選項 LUA_COMPAT_GETN
。)
loadlib
已更名為 package.loadlib
。(請參閱 luaconf.h
中的選項 LUA_COMPAT_LOADLIB
。)
math.mod
已更名為 math.fmod
。(請參閱 luaconf.h
中的選項 LUA_COMPAT_MOD
。)
table.foreach
和 table.foreachi
已不再使用。您可以使用 for
迴圈搭配 pairs
或 ipairs
取代。
require
進行了重大變更。儘管如此,目前的運作與先前的版本大致相容,僅有 require
從 LUA_PATH
取得路徑改為從 package.path
取得。
collectgarbage
有不同的參數。函式 gcinfo
已不再使用,應以 collectgarbage("count")
取代之。
luaopen_*
(用於開啟函式庫)函式。現在您必須透過 Lua 呼叫這些函式,就像呼叫任何 Lua 函式一樣。
lua_open
已被 lua_newstate
取代,允許使用者設定記憶體配置函式。您可以使用標準函式庫中的 luaL_newstate
來建立在 realloc()
基礎上設定標準記憶體配置函式的狀態。
luaL_getn
和 luaL_setn
已逐漸廢除。lua_objlen
取代了luaL_getn
。luaL_setn
沒有替代函式。
luaL_openlib
已經被luaL_register
所取代。
luaL_checkudata
函式已會引發錯誤。在 5.0 版中,它會在這種情況下傳回NULL
。