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:
parent
9a4c662771
commit
117b4df7c7
3 changed files with 29 additions and 9 deletions
|
@ -92,7 +92,7 @@ class Rational < Numeric
|
|||
elsif a.kind_of?(Float)
|
||||
Float(self) + a
|
||||
else
|
||||
x , y = a.coerce(self)
|
||||
x, y = a.coerce(self)
|
||||
x + y
|
||||
end
|
||||
end
|
||||
|
@ -107,7 +107,7 @@ class Rational < Numeric
|
|||
elsif a.kind_of?(Float)
|
||||
Float(self) - a
|
||||
else
|
||||
x , y = a.coerce(self)
|
||||
x, y = a.coerce(self)
|
||||
x - y
|
||||
end
|
||||
end
|
||||
|
@ -122,7 +122,7 @@ class Rational < Numeric
|
|||
elsif a.kind_of?(Float)
|
||||
Float(self) * a
|
||||
else
|
||||
x , y = a.coerce(self)
|
||||
x, y = a.coerce(self)
|
||||
x * y
|
||||
end
|
||||
end
|
||||
|
@ -138,7 +138,7 @@ class Rational < Numeric
|
|||
elsif a.kind_of?(Float)
|
||||
Float(self) / a
|
||||
else
|
||||
x , y = a.coerce(self)
|
||||
x, y = a.coerce(self)
|
||||
x / y
|
||||
end
|
||||
end
|
||||
|
@ -161,7 +161,7 @@ class Rational < Numeric
|
|||
elsif other.kind_of?(Float)
|
||||
Float(self) ** other
|
||||
else
|
||||
x , y = other.coerce(self)
|
||||
x, y = other.coerce(self)
|
||||
x ** y
|
||||
end
|
||||
end
|
||||
|
@ -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
|
||||
x , y = other.coerce(self)
|
||||
elsif defined? other.coerce
|
||||
x, y = other.coerce(self)
|
||||
return x <=> y
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue