【问题标题】:How to convert Fixnum to Integer in ruby如何在 ruby​​ 中将 Fixnum 转换为 Integer
【发布时间】:2013-03-27 10:51:51
【问题描述】:

我正在尝试获取整数,但我正在获取“Fixnum”值。

例如:

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

Result
=> Fixnum

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

【问题讨论】:

  • 你可能想提出一个关于插件的问题。就目前而言,您认为您知道问题所在,并要求以您认为问题已解决的方式解决问题;但很可能产生这些错误的 real 问题是别的东西(比如,可能进入插件的数组中的元素之一不是你认为的数字:-)

标签: ruby arrays integer fixnum


【解决方案1】:

在 Ruby 中,整数是 FixnumBignum 类中的一个,用于更大的数字。它们都继承自Integer 类。

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

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

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

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

【讨论】:

  • @ShruthiRamesh 你能提供更多背景信息吗?
  • @ShruthiRamesh,But i am getting an error like 'Please enter only integer',那你说你用的插件不对。
  • @ShruthiRamesh 听起来插件想要一个整数,你传入一个数组
【解决方案2】:

Fixnum 是标准整数的 ruby​​ 类。

具体来说,Integer 类涵盖了Fixnums 和Bignums,但老实说,这里没有什么可做的。

【讨论】:

    【解决方案3】:

    所有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
    

    【讨论】:

      猜你喜欢
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 2012-06-18
      相关资源
      最近更新 更多