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

Ruby 如何编写适用于所有数字的方法,ruby,inheritance,class-method,Ruby,Inheritance,Class Method,我正在写一个Fixnum类方法到_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

我正在写一个
Fixnum
类方法
到_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

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

Fixnum
Bignum
都继承自
Integer
,因此,在您的情况下,最好将
#定义为
Integer
上的
,这样
Fixnum
s或
Bignum
s将继承该方法。

1074000000
实际上是一个
Fixnum
而不是
Bignum
在ruby 2.2.0p0(2014-12-25修订版49005)上的
1074000000
实际上是一个
Fixnum
,与
Bignum
snot在ruby 2.2.0p0(2014-12-25修订版49005)上是不正确的解决方案。正是出于这个原因,Ruby为数字类型提供了一个非常好的继承层次结构。这是正确的解决方案。正是出于这个原因,Ruby为数字类型提供了一个非常好的继承层次结构。