1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/complex.rb (Complex#==): should not raise error by type

mismatch.

* lib/rational.rb (Rational#==): ditto.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
matz 2003-02-06 09:49:12 +00:00
parent 9a4c662771
commit 117b4df7c7
3 changed files with 29 additions and 9 deletions

View file

@ -1,3 +1,10 @@
Thu Feb 6 17:43:56 2003 Yukihiro Matsumoto <matz@ruby-lang.org>
* lib/complex.rb (Complex#==): should not raise error by type
mismatch.
* lib/rational.rb (Rational#==): ditto.
Thu Feb 6 11:44:40 2003 MoonWolf <moonwolf@moonwolf.com>
* re.c (rb_reg_initialize_m): 3rd argument was ignored.

View file

@ -265,8 +265,7 @@ class Complex < Numeric
elsif Complex.generic?(other)
@real == other and @image == 0
else
x , y = other.coerce(self)
x == y
other == self
end
end

View file

@ -184,6 +184,18 @@ class Rational < Numeric
end
end
def == (other)
if other.kind_of?(Rational)
@numerator == other.numerator and @denominator == other.denominator
elsif other.kind_of?(Integer)
self == Rational.new!(other, 1)
elsif other.kind_of?(Float)
Float(self) == other
else
other == self
end
end
def <=> (other)
if other.kind_of?(Rational)
num = @numerator * other.denominator
@ -200,9 +212,11 @@ class Rational < Numeric
return self <=> Rational.new!(other, 1)
elsif other.kind_of?(Float)
return Float(self) <=> other
else
elsif defined? other.coerce
x, y = other.coerce(self)
return x <=> y
else
return nil
end
end