Ruby - 比较从字符串派生的整数

时间:2013-06-09 05:14:02

标签: ruby

我正在使用ruby 1.9.3并使用

从文本文件中读取数字
or_rating = line.scan((/\d+/)).map(&:to_i)

然后我用

读了另一个数字
offrating = line.scan((/\d+/)).map(&:to_i)

然后尝试进行比较

if offrating - 1 <= or_rating then...

但我收到此错误

can't convert Fixnum into Array (TypeError)

我发现的大多数答案都是指我尝试过的to_i映射(上图),但我无法让它工作。

3 个答案:

答案 0 :(得分:2)

您的offrating是一个数组而or_rating是另一个数组。

你正在尝试

Array - FixNum <= Array

所以你得到错误,因为它试图将1(FixNum)转换为Array来做-和比较

如果您希望offratingor_rating始终返回单个元素数组,那么您可以这样做,

offrating[0] - 1 <= or_rating[0]

答案 1 :(得分:0)

scan返回一个数组。您遇到的问题是offrating - 1部分。

它试图从Array中减去数字1。如果你添加索引器,就像这样

if offrating[0] - 1 <= or_rating[0]

它可以摆脱错误,但我不知道这是否会给你你想要的结果。

答案 2 :(得分:0)

tcshao和JSWorld说的是 - 你从表达式中得到一个数组 - 字符串中的数字数组。看起来像你想要的:

line.scan(/\d+/).map(&:to_i).each_slice(2).select{ |or_rating, offrating| 
  offrating - 1 <= or_rating
}.each{ |or_rating, offrating|
  puts "Your Code Here"
}

或者您可以在块中使用if而不是select