件名はすべてです。ルアには、現在実行中のバージョンを教えてくれる関数がありますか?
print(_VERSION)
-- Output
Lua 5.2
UPD:
他の方法を区別するために、私はグローバル変数_Version(文字列)があり、私のホストインタプリタがLuaの5.2または5.1
件名はすべてです。ルアには、現在実行中のバージョンを教えてくれる関数がありますか?
print(_VERSION)
-- Output
Lua 5.2
UPD:
他の方法を区別するために、私はグローバル変数_Version(文字列)があり、私のホストインタプリタがLuaの5.2または5.1
を実行しているかどうかを知りたいですルアのバージョン:
if _ENV then
-- Lua 5.2
else
-- Lua 5.1
end
if 9^33 == 27^22 then -- this check is valid for x86/x64 only
-- vanilla Lua
else
-- LuaJIT
end
_VERSION
は、インタープリタのバージョンを保持します。参考のためにmanualを確認してください。
また、Luaバージョン(_VERSION
では使用できません)の3桁目が必要な場合は、コマンドラインでlua -v
コマンドの出力を解析する必要があります。
arg
グローバルテーブルを定義する必要があります.IOW:
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
は(Linuxの場合、私は知りません)、Windows上stderr
に書き込む注意ので、(のみstdout
キャプチャ)io.popenためcommand
stdout
にstderr
をリダイレクトし、構文はプラットフォーム固有である必要があります。
3桁目は、機能の変更なしにリリースを修正してください。それらをテストするのは意味がないようです。 – lhf
@lhf一般的には私は完全に同意しますが、特別なニーズのためには知っておくと便利です。例えば。あなたのスクリプトが、特定のパッチが適用されているインタプリタによって実行されているのか、それとも古いものであるのかを発見したいとします(おそらく、あなたの制御下にないシステムでスクリプトを実行しなければならないかもしれません。コードを使用する必要があります)。しかし、私はそれがニンピッカ側のビットであることを認めています:-) –
Linuxでは 'lua -v'はLua 5.2では' stdout'に書き込みますが、Lua 5.1では 'stderr'に書き込みますが、リダイレクトの構文は(Bourne)シェルでも同じですが、LinuxとWindowsで同じコマンド文字列を使うことができます(OS Xでもほとんど同じです)。 –
ああ... _VERSIONというグローバル変数があります: – henryaz