ruby 中最大的兼容性规则

Posted

技术标签:

【中文标题】ruby 中最大的兼容性规则【英文标题】:Greatest compatibility rule in ruby 【发布时间】:2016-12-14 14:40:47 【问题描述】:

使用Gem::Dependency.new(nil, rule).match?(nil, version),我可以检查版本是否符合兼容性规则。

使用%w<0.1 0.2.1 0.44>.map |v| Gem::Version.new v.max.to_s,我可以轻松找到最新版本。

我有一系列依赖项,我需要找到最大的,有没有简单的方法来做到这一点?

例如['~1.5', '~1.6'] -> '~1.6'

【问题讨论】:

【参考方案1】:

只是来自一个版本字符串数组?

['~1.5', '~1.6'].map  |d| d.sub "~", "" .map(&:to_f).max

【讨论】:

这很糟糕,因为有一些不同的兼容性运算符,并且 max fonction 使用 float 而不是 Symver 规范。例如 0.44 > 0.5 并且根据您的答案,0.5 大于 0.44,这是错误的。 您必须拆分或获取版本 MAJOR、MINOR 和 PATCH 编号并进行比较。

以上是关于ruby 中最大的兼容性规则的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ruby 找到最小值/最大值

MongoDB 中与 Ruby 一起使用的字符串数据类型的最大长度是多少?

Ruby:应该从子数组返回最大值数组的递归函数的问题

ruby Rspec测试的最大命中:第1卷

所有可能和的最小值、最大值、平均值和中值 (Ruby)

如何根据枚举哈希对数组进行排序并返回 Ruby 中的最大值?