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为数字类型提供了一个非常好的继承层次结构。