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


Ruby Range.max用法及代码示例


本文简要介绍ruby语言中 Range.max 的用法。

用法

max → object
max(n) → array
max {|a, b| ... } → object
max(n) {|a, b| ... } → array

返回 self 中的最大值,使用方法 <=> 或给定块进行比较。

没有参数也没有给出块,返回 self 的 maximum-valued 元素。

(1..4).max     # => 4
('a'..'d').max # => "d"
(-4..-1).max   # => -1

在给定非负整数参数 n 且未给出块的情况下,返回数组中 selfn maximum-valued 元素:

(1..4).max(2)     # => [4, 3]
('a'..'d').max(2) # => ["d", "c"]
(-4..-1).max(2)   # => [-1, -2]
(1..4).max(50)    # => [4, 3, 2, 1]

如果给定一个块,则调用它:

  • 首先,使用 self 的前两个元素。

  • 然后,依次使用 so-far 最大值和 self 的下一个元素。

为了显示:

(1..4).max {|a, b| p [a, b]; a <=> b } # => 4

输出:

[2, 1]
[3, 2]
[4, 3]

没有参数和给定块,返回最后一次调用块的返回值:

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

给定非负整数参数 n 和一个块,返回最后一个 n 调用数组中的块的返回值:

(1..4).max(2) {|a, b| -(a <=> b) }  # => [1, 2]
(1..4).max(50) {|a, b| -(a <=> b) } # => [1, 2, 3, 4]

如果 n 为零,则返回一个空数组:

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

如果满足以下条件,则返回 nil 或空数组:

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

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

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

如果出现以下任一情况,则引发异常:

  • self 是无限范围:(1..)

  • 给定一个块,self 是一个无开始的范围。

相关: Range#min Range#minmax

相关用法


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