Feature #10505 » Update_Numeric#eql_.patch
| numeric.c | ||
|---|---|---|
|
*
|
||
|
* Returns +true+ if +num+ and +numeric+ are the same type and have equal
|
||
|
* values.
|
||
|
*
|
||
|
* 1 == 1.0 #=> true
|
||
|
* 1.eql?(1.0) #=> false
|
||
|
* (1.0).eql?(1.0) #=> true
|
||
|
* If the optional +block+ is given, compare between results of running +block+ for +num+ and +numeric+.
|
||
|
*
|
||
|
* 1 == 1.0 #=> true
|
||
|
* 1.eql?(1.0) #=> false
|
||
|
* (1.0).eql?(1.0) #=> true
|
||
|
* 4.eql?(6) { |n| n % 2 } #=> true
|
||
|
* 3.eql?(-3, &:abs) #=> true
|
||
|
* 1.eql?(1.0, &:itself) #=> true
|
||
|
*/
|
||
|
static VALUE
|
||
|
num_eql(VALUE x, VALUE y)
|
||
|
{
|
||
|
if (rb_block_given_p()) {
|
||
|
return rb_equal(rb_yield(x), rb_yield(y));
|
||
|
}
|
||
|
if (TYPE(x) != TYPE(y)) return Qfalse;
|
||
|
return rb_equal(x, y);
|
||