start - En Lua, ¿hay una función que me diga qué versión actual estoy ejecutando?
luabinaries sourceforge net download (3)
El sujeto lo dice todo. Me gustaría saber si mi intérprete de host está ejecutando Lua 5.2 o 5.1
Hay una variable global _VERSION (una cadena):
print(_VERSION)
-- Output
Lua 5.2
UPD:
Otros métodos para distinguir entre versiones Lua:
if _ENV then
-- Lua 5.2
else
-- Lua 5.1
end
UPD2:
--[=[
local version = ''Lua 5.0''
--[[]=]
local n = ''8''; repeat n = n*n until n == n*n
local t = {''Lua 5.1'', nil,
[-1/0] = ''Lua 5.2'',
[1/0] = ''Lua 5.3'',
[2] = ''LuaJIT''}
local version = t[2] or t[#''/z''] or t[n/''-0''] or ''Lua 5.4''
--]]
print(version)
Si también necesita el tercer dígito en la versión Lua (no disponible en _VERSION
), debe analizar la salida del comando lua -v
en la línea de comandos.
Para las plataformas que admiten io.popen, esta secuencia de comandos hará el truco, pero solo si la secuencia de comandos es ejecutada por el intérprete independiente (no en modo interactivo) .IOW se debe definir la tabla global de arg
:
local i_min = 0
while arg[ i_min ] do i_min = i_min - 1 end
local lua_exe = arg[ i_min + 1 ]
local command = lua_exe .. [[ -v 2>&1]] -- Windows-specific
local fh = assert( io.popen( command ) )
local version = fh:read ''*a''
fh:close()
-- use version in the code below
print( version )
print( version:match ''(%d%.%d%.%d)'' )
Tenga en cuenta que lua -v
escribe en stderr
en Windows (para Linux no sé), por lo que el command
para io.popen (que solo captura stdout
) debe redirigir stderr
a stdout
y la sintaxis es específica de la plataforma.
_VERSION
tiene la versión del intérprete. Compruebe el manual para la referencia.