-1
类的平等,我创建这个类基于预定义的测试与强制
class Roman
include Comparable
ROMAN_NUMBERS = { 1000 => "m", 900 => "cm", 500 => "d", 400 => "cd",
100 => "c", 90 => "xc", 50 => "l", 40 => "xl", 10 => "x", 9 => "ix",
5 => "v", 4 => "iv", 1 => "i" }
def initialize(number)
@number = number
end
def coerce(other)
if Integer === other
[ other, @number ]
else
[ Float(other), Float(@number) ]
end
end
def <=>(n)
@number <=> n
end
def -(n)
Roman.new(@number - n)
end
def to_s
roman = ''
ROMAN_NUMBERS.each do |value, letter|
roman << letter * (@number/value)
@number = @number % value
end
roman
end
end
但我仍然没有这一项
it "should support substraction" do
(Roman.new(5) - Roman.new(3)).should == 2
(Roman.new(4) - Roman.new(1)).should == 3
(Roman.new(4) - 2).should == 2
res = 6 - Roman.new(1)
res.should == 5
(res.kind_of? Roman).should be true
end
的问题是,res
是“种” Fixnum
。那可能怎么样?如何使其通过测试?
谢谢你的帮助,主要是为了解释:) –