这是我的看法。我可能完全错了,但正如你所问的理由,这就是我看到版本号及其使用的方式。
版本号实际上并不是数字,它们实际上只是具有一些语义和基于该语义的比较逻辑的标识符。该逻辑的一部分是能够检查两个版本是否兼容。
从这个意义上说,2.0
代表任何2.0
衍生物,或2.0.*.*
。当您将关系运算符与版本一起使用时,您实际上想要回答兼容性问题,其中的>=
意思是is backwards compatible with
.
所以,V1 >= V2
意思是is V1 backwards compatible with V2
。
2.0.0.0 >= 2.0.*.*
-> true,2.0.0.0
应该能够在支持声称支持的系统上运行2.0.*.*
2.0.*.* >= 2.0.0.0
-> false,因为并非每个2.0.*.*
版本都保证兼容2.0.0.0
[编辑:回答评论]
那么2.0.*.*
至少不应该等于2.0.0.0
?因为(用你的话来说)“2.0.0.0
应该能够在支持声称支持的系统上运行2.0.*.*
”
我认为让您感到困惑的是,我们选择2.0.0.0
了直观地理解为基本版本的版本,因此在逻辑上等同于2.0.*.*
,但事实并非如此。
它不应该相等,因为2.0.*.*
任何2.0 版本(不仅仅是选择的特定版本),因此是ANY_20_VERSION == 2000_VERSION
错误的。换句话说,这意味着任何2.0
导数都应该能够满足关系(不仅仅是选择的特定关系),并且显然2.0.0.1
与2.0.0.0