Manual Capitulo Siete |
|
Aquí presentamos las incompatibilidades que encontrarían al migrar un programa de Lua 5.0 a Lua 5.1. Podrían evitar la mayoria de las incompatibilidades por compilar Lua con opciones apropriadas (véase el archivo luaconf.h
. Sin embargo, todas las opciones de compatibilidad serán eliminados en la próxima versión de Lua.
arg
-- una tabla con los argumentos adicionales -- a la expresión "vararg" ...
. (Véase la opción de compilación LUA_COMPAT_VARARG
en luaconf.h
.)
for
y repeat
.
[[cadena]]
) ya no permite inclusión recursiva. Podrían usar la nueva sintaxis [=[cadena]=]
en tal caso. (Véase la opción LUA_COMPAT_LSTR
en luaconf.h
).
string.gfind
fue dado el nuevo nombre string.gmatch
. (Véase la opción LUA_COMPAT_GFIND
en luaconf.h
).
string.gsub
sea una función y la función devuelva nil
o false
, el reemplazo es el "match" completo en lugar de la cadena vacía.
table.setn
fue desaprobado. La función table.getn
corresponde al nuevo operador de longitud (#
) lo cual deberían usar en lugar de la función. (Véase la opción LUA_COMPAT_GETN
en luaconf.h
).
loadlib
fue dado el nuevo nombre package.loadlib
. ((Véase la opción LUA_COMPAT_LOADLIB
en luaconf.h
).
math.mod
fue dado el nuevo nombre math.fmod
. (Véase la opción LUA_COMPAT_MOD
en luaconf.h
).
table.foreach
y table.foreachi
están desaprobados. En su lugar, podrián usar un bucle for
con pairs
o ipairs
.
require
debido al nuevo sistema de módulos. Sin embargo, el funcionamento actual es más o menos compatible con lo anterior salvo por el hecho que require
obtiene el camino de package.path
en lugar de LUA_PATH
.
collectgarbage
tiene diferentes argumentos. La función gcinfo
está desaprobado y debería ser reemplazado por collectgarbage("count")
.
luaopen_*
(para abrir bibliotecas). Ahora hay que invocarlos a través de Lua, como cualquier función de Lua.
lua_open
ha sido reemplazado con lua_newstate
para permiter que el usuario establece una función de reparto de memoria. Podrían usar luaL_newstate
en la biblioteca estándar para crear un estado con una función estándar de reparto en base de realloc()
.
luaL_getn
y luaL_setn
en la biblioteca auxiliar. lua_objlen
reemplaza luaL_getn
. No hay reemplazo para luaL_setn
.
luaL_openlib
fue reemplazado por luaL_register
.
luaL_checkudata
ya levanta un error cuando el valor dado no es un "userdata" del tipo especificado. En la versión 5.0, devolvió NULL
en tal circunstancia.