Bug #9989
closedDocs give wrong information for sort block return values
Description
Under the Array.sort documentation, this statement is made:
Comparisons for the sort will be done using the <=> operator or using an optional code block.
The block must implement a comparison between a and b, and return -1, when a follows b, 0 when a and b are equivalent, or +1 if b follows a.
This is incorrect. The default sort block is { |a,b| a <=> b }
. That is ascending sort, where 2
would follow 1
. However, 1 <=> 2
returns -1
, not +1
as the statement claims. The statement should read:
The block must implement a comparison between a and b, and return -1 when b follows a, 0 when a and b are equivalent, or +1 if a follows b.
Updated by robyoder (Rob Yoder) over 10 years ago
This occurs under Array.sort and Array.sort! (http://www.ruby-doc.org/core-2.1.2/Array.html#method-i-sort)
Enumerable.sort vaguely states:
The block should return -1, 0, or +1 depending on the comparison between a and b.
(http://ruby-doc.org/core-2.1.2/Enumerable.html#method-i-sort)
Updated by ayumin (Ayumu AIZAWA) almost 10 years ago
- Related to Bug #10125: Array#sort and #sort! documentation issue added
Updated by stomar (Marcus Stollsteimer) almost 8 years ago
- Status changed from Open to Closed
Fixed with r51859 (Array) and r57770 (Enumerable).