首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Lua中,有没有一个函数可以告诉我当前运行的版本是什么?

在Lua中,有没有一个函数可以告诉我当前运行的版本是什么?
EN

Stack Overflow用户
提问于 2013-04-28 05:56:05
回答 3查看 18.4K关注 0票数 21

受试者说出了一切。我想知道我的主机解释器是运行Lua 5.2还是5.1

EN

回答 3

Stack Overflow用户

发布于 2013-04-28 05:59:55

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

代码语言:javascript
运行
复制
print(_VERSION)

-- Output
Lua 5.2

更新:

区分Lua版本的其他方法:

代码语言:javascript
运行
复制
if _ENV then 
  -- Lua 5.2
else
  -- Lua 5.1
end

UPD2 :

代码语言:javascript
运行
复制
--[=[
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)
票数 30
EN

Stack Overflow用户

发布于 2013-04-28 06:01:28

_VERSION保存解释器版本。检查manual以获取参考信息。

票数 3
EN

Stack Overflow用户

发布于 2013-08-19 06:47:01

如果您还需要在Lua版本中使用第三个数字(在_VERSION中不可用),则需要在命令行上解析lua -v命令的输出。

对于支持io.popen的平台,此脚本可以完成此任务,但前提是该脚本由独立解释器(不是在交互模式下)运行,并且必须定义arg全局表:

代码语言:javascript
运行
复制
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是在Windows上的stderr上编写的(对于Linux我不知道),因此io.popen的command (它只捕获stdout)必须将stderr重定向到stdout,并且语法是特定于平台的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16257259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档