0

class を作成する必要がNumberSetあります。これは、まだ含まれていない数字のみを含めることができる、さまざまな種類の数字のコンテナーです。

class NumberSet
  include Enumerable

  def initialize
    @arr=[]
  end
  def each (&block)
    @arr.each do |member|
      block.call (member)
    end
  end
  def << number
    @arr<<number if @arr.include?(number) == false
  end
end

このコードは有理数を切り捨てます。たとえば、(22/7)と等しくないでください(3/1)

mine=NumberSet.new
mine<<Rational(22/7)
# => [(3/1)]
mine<<3.0
# => nil

どうすればこれを修正できますか?

4

2 に答える 2

4

Rational の使い方が間違っています。する必要があります

mine << Rational(22, 7)
于 2014-10-21T14:31:23.227 に答える
1

最新の Ruby では、次のことを行う必要があります。

mine << 22/7r
于 2014-10-21T14:40:03.703 に答える