将版本信息转换为整数,以便进行比较

我正在设计一个运行用 Lua 编写的终端用户脚本的程序。该程序定义了一个接口,告诉它传递给哪个函数多少个参数,它们的顺序等等。在将来的某个时候,接口可能会发生变化,因此我想向脚本传递主机程序的版本信息。我的通常做法是使用 MAJOR.MINOR.PATCH 格式。

目标是尽可能保持表示简单,以便可以使用算术运算处理信息,例如:

if program.version < SCRIPT_SUPPORTS_VERSION then
    error ("此版本不受支持,请升级...")
end

常识告诉我们使用十六进制写成的整数,其中每个字节表示版本格式中的一个部分。就像这样:

-- 版本 1.3.2
-- 与版本 >=1.2.0 兼容
--
local program = {}
program.version = 0x010302
local SCRIPT_SUPPORTS_VERSION = 0x010200

正如我之前提到的,这是我在思考这个问题时首先想到的,并且它似乎可以工作。另一方面,十六进制数可能对某些人来说似乎很可怕。

我想知道您的意见,提出替代方案。

点赞