在Lua中,有一个函数,它会告诉我,我运行的最新版本?(In Lua, is there a fun

2019-09-01 07:17发布

主题说明了一切。 我想知道如果我的主机解译正在运行的Lua 5.2或5.1

Answer 1:

有全局变量_VERSION(字符串):

print(_VERSION)

-- Output
Lua 5.2

UPD:
其他方法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)


Answer 2:

如果您还需要在Lua版本的第三位(无法使用的_VERSION ),你需要解析的输出lua -v在命令行命令。

对于支持io.popen这个脚本平台将做的伎俩,但前提是脚本由独立的解释(不是在交互模式).IOW的运行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)' )

需要注意的是lua -v上写入stderr (在Windows的Linux,我不知道),所以command为io.popen(只捕获stdout )必须重定向stderrstdout和语法是特定于平台。



Answer 3:

_VERSION持有的解释版本。 检查手册,以供参考。



文章来源: In Lua, is there a function that will tell me what current version I'm running?
标签: lua version