如何编写适用于所有数字的方法

时间:2015-02-24 16:49:58

标签: ruby inheritance class-method

我正在写一个Fixnum类方法to_words,它接受​​任何数字并将其翻译成英语,

2.to_words
#=> "two"
2030.to_words
#=> "two thousand thirty" 

我希望它能够处理所有数字,一旦我获得了超过10亿的数据就会出现问题:

1000002000.to_words
#=> "one billion two thousand"
1074000000.to_words
#=> NoMethodError
1074000000.class
#=> Bignum

有没有办法将我的Fixnum.to_words方法扩展到Bignum

1 个答案:

答案 0 :(得分:5)

FixnumBignum都继承自Integer,因此在您的情况下,最好在#to_words上定义Integer,以便Fixnum } s或Bignum s将继承该方法。