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

With the newest Ruby, you should do:

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