我必须创建类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
此代码截断了Rational数字。例如,(22/7)
不应该等于(3/1)
。
mine=NumberSet.new
mine<<Rational(22/7)
# => [(3/1)]
mine<<3.0
# => nil
我该如何解决这个问题?
答案 0 :(得分:4)
您对Rational的使用是错误的。应该是
mine << Rational(22, 7)
答案 1 :(得分:1)
使用最新的Ruby,你应该这样做:
mine << 22/7r