我想在做数学时将罗马数字与阿拉伯数字混合.
我会为每个符号定义一些类
class I end class V end class X end
现在我希望能够说出类似的话
5 + V # results in 10 X + 12 # results in 22
但我不知道从哪里开始.
我必须定义一个方法,告诉ruby如何5 + V工作,给每个类一个值,当我说
I
我应该得到值1.
我应该采用什么样的方法让我将其X视为10号?
对我来说似乎很简单:
V = 5
V + 1 #=> 6
Run Code Online (Sandbox Code Playgroud)
如果你想把结果显示为罗马数字,我会Fixnum用一个to_roman方法扩展类:
class Fixnum
def to_roman
# I'll leave the implementation up to you
end
end
Run Code Online (Sandbox Code Playgroud)
有了这个你可以做:
10.to_roman #=> "X"
Run Code Online (Sandbox Code Playgroud)