加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 为什么Gemfile语义版本控制运算符(?>)会产生一个数字

发布时间:2020-12-16 23:10:36 所属栏目:百科 来源:网络整理
导读:gemspec语义版本控制运算符? (又名 twiddle-wakka,又名 pessimistic运算符)允许对gem版本进行约束,但允许进行一些升级. 我经常看到它可以被解读为: "~ 3.1" = "Any version 3.x,but at least 3.1" "~ 3.1.1" = "Any version 3.1.x,but at least 3.1.1" 但是
gemspec语义版本控制运算符?> (又名 twiddle-wakka,又名 pessimistic运算符)允许对gem版本进行约束,但允许进行一些升级.

我经常看到它可以被解读为:

"~> 3.1"   => "Any version 3.x,but at least 3.1"
 "~> 3.1.1" => "Any version 3.1.x,but at least 3.1.1"

但是有一个数字,这个规则就会崩溃:

"~> 3"     => "Any version x,but at least 3"   *NOT TRUE!*
 "~> 3"     => "Any version 3.x"                 *True. But why?*

如果我想要“任何版本3.x”,我可以使用“?> 3.0”,这是一致的.就目前而言,这种操作在一个数字上的变化是不一致的,没有记录.

此外,如果我想说“任何高于或等于3的版本”(所以3.x,4.x等…)我很想使用“> =”运算符,我们被告知is evil.

这种行为有原因吗?

编辑:

我将这个给大卫找到rubygems中的罪魁祸首文件.有一个“功能”无声地将“3”扩展为“3.0”(Line 148 in version.rb:“单个数字版本会自动扩展为零以产生合理的结果.”)

我必须说我不同意结果是明智的,因为它打破了预期的顺序,并阻止能够用该运算符说“任何版本x,但至少3”.因此,无论如何,我们被迫进入> =的哪个指南.rubygems.org warns us not to use.也许这篇文章将作为我一直在寻找的文档……

解决方法

通过窥视rubygems源(特别是requirement.rb,version.rb),悲观运算符至少需要两个版本控制段.

它也有意义.作为?> v.r只是不平等的语法糖

v.r< = current_version.current_release< (第1节).0 如果只有一个版本号,那么上限是多少?是的,∞(无穷大),所以没有必要为什么它应该工作.你可以简单地把它写成> = v.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读