当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Range.minmax用法及代码示例

用法

minmax → [object, object]
minmax {|a, b| ... } → [object, object]

根据比较方法 <=> 或给定块,返回包含 self 中的最小值和最大值的 2 元素数组。

没有给出块,返回最小值和最大值,使用<=>进行比较:

(1..4).minmax     # => [1, 4]
(1...4).minmax    # => [1, 3]
('a'..'d').minmax # => ["a", "d"]
(-4..-1).minmax   # => [-4, -1]

给定一个块,该块必须返回一个整数:

  • 如果 a 小于 b ,则为负数。

  • 如果 ab 相等,则为零。

  • 如果 a 大于 b ,则为正。

该块被调用self.size次来比较元素;根据块返回一个 2 元素 Array 包含来自 self 的最小值和最大值:

(1..4).minmax {|a, b| -(a <=> b) } # => [4, 1]

如果出现以下情况,则返回 [nil, nil]

  • 范围的开始值大于结束值:

    (4..1).minmax                      # => [nil, nil]
    (4..1).minmax {|a, b| -(a <=> b) } # => [nil, nil]
  • 独占范围的开始值等于结束值:

    (1...1).minmax                          # => [nil, nil]
    (1...1).minmax  {|a, b| -(a <=> b) }    # => [nil, nil]

如果 self 是无开始或无止境范围,则引发异常。

相关: Range#min Range#max

相关用法


注:本文由堆栈答案筛选整理自ruby-lang.org大神的英文原创作品 Range.minmax。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。