diff --git a/array.c b/array.c index fca9976c57..d68895827d 100644 --- a/array.c +++ b/array.c @@ -5916,42 +5916,51 @@ ary_max_opt_string(VALUE ary, long i, VALUE vmax) /* * call-seq: - * array.max -> element - * array.max {|a, b| ... } -> element - * array.max(n) -> new_array - * array.max(n) {|a, b| ... } -> new_array + * max -> element + * max(n) -> new_array + * max {|a, b| ... } -> element + * max(n) {|a, b| ... } -> new_array * * Returns one of the following: * * - The maximum-valued element from +self+. - * - A new +Array+ of maximum-valued elements selected from +self+. + * - A new array of maximum-valued elements from +self+. * - * When no block is given, each element in +self+ must respond to method <=> - * with an Integer. + * Does not modify +self+. + * + * With no block given, each element in +self+ must respond to method #<=> + * with a numeric. * * With no argument and no block, returns the element in +self+ * having the maximum value per method <=>: * - * [0, 1, 2].max # => 2 + * [1, 0, 3, 2].max # => 3 * - * With an argument Integer +n+ and no block, returns a new +Array+ with at most +n+ elements, - * in descending order per method <=>: + * With non-negative numeric argument +n+ and no block, + * returns a new array with at most +n+ elements, + * in descending order, per method <=>: * - * [0, 1, 2, 3].max(3) # => [3, 2, 1] - * [0, 1, 2, 3].max(6) # => [3, 2, 1, 0] + * [1, 0, 3, 2].max(3) # => [3, 2, 1] + * [1, 0, 3, 2].max(3.0) # => [3, 2, 1] + * [1, 0, 3, 2].max(9) # => [3, 2, 1, 0] + * [1, 0, 3, 2].max(0) # => [] * - * When a block is given, the block must return an Integer. + * With a block given, the block must return a numeric. * - * With a block and no argument, calls the block self.size-1 times to compare elements; - * returns the element having the maximum value per the block: + * With a block and no argument, calls the block self.size - 1 times to compare elements; + * returns the element having the maximum return value from the block: * - * ['0', '00', '000'].max {|a, b| a.size <=> b.size } # => "000" + * ['0', '', '000', '00'].max {|a, b| a.size <=> b.size } + * # => "000" * - * With an argument +n+ and a block, returns a new +Array+ with at most +n+ elements, - * in descending order per the block: + * With non-negative numeric argument +n+ and a block, + * returns a new array with at most +n+ elements, + * in descending order, per the block: * - * ['0', '00', '000'].max(2) {|a, b| a.size <=> b.size } # => ["000", "00"] + * ['0', '', '000', '00'].max(2) {|a, b| a.size <=> b.size } + * # => ["000", "00"] * + * Related: see {Methods for Fetching}[rdoc-ref:Array@Methods+for+Fetching]. */ static VALUE rb_ary_max(int argc, VALUE *argv, VALUE ary)