2013-03-27 33 views
0

我想获得整数,但我得到'Fixnum'值。如何将Fixnum转换为红宝石整数

对于如:

arr = ["1", "2", "3", "4"] 
arr.each do |a| 
m = a.to_i 
m.class.name 

Result 
=> Fixnum 

根据上面的例子,我怎样才能得到整数值? Fixnum是一个整数,但实现一个插件时,它会通过一个错误,如“请只输入整数”。

+0

你可能想提出一个有关插件的问题即可。就目前而言,你认为你知道这个问题,并且已经要求一个解决方案来解决它,就像你认为它被破坏一样;但很可能导致这些错误的* real *问题是其他问题(比如,可能是插件中的一个元素不是像你想象的那样的数字:-) – Pavling 2013-03-27 12:05:25

回答

0

Fixnum是标准整数的ruby类。

具体而言,Integer类包括Fixnum s和Bignum s,但是诚实地说,这里没有什么可以做的。

14

在Ruby中,整数是FixnumBignum中的较大数字。他们都继承Integer类。

所以你已经有了一个整数,不需要进一步转换。

1.class #=> Fixnum 
1.class.superclass #=> Integer 

要转换的数组元素为整数,你可以这样做:

arr = ["1", "2", "3", "4"] 
arr.map(&:to_i) #=> [1, 2, 3, 4] 
+0

但是我得到像'请只输入整数'错误 – 2013-03-27 10:56:48

+0

@ShruthiRamesh你可以提供更多的上下文吗? – 2013-03-27 10:58:51

+0

@ShruthiRamesh这个错误信息来自哪里? – Stefan 2013-03-27 11:04:17

0

所有Fixnum(S)已经Integer。下面是一些例子:

"12".to_i.class 
#=> Fixnum 
"12".to_i.integer? 
#=> true 
"12".to_i.to_int 
#=> 12 

以上一切皆有可能原样

"12".to_i.class.superclass 
#=> Integer