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

Ruby-比较从字符串派生的整数,ruby,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... 我找到的大多数答案都是关于将映射到\u I,我已经尝试了(上面),但我无法让它工作。您的offrating是一个数组,而或\u rating是

我正在使用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...

我找到的大多数答案都是关于将
映射到\u I
,我已经尝试了(上面),但我无法让它工作。

您的
offrating
是一个数组,而
或\u rating
是另一个数组

而你正试图做到这一点

Array - FixNum <= Array

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

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

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

if offrating[0]-1tcshao和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"
}
line.scan(/\d+/).map(&:to_i)。每个_片(2)。选择{或_评级,关闭|

offrating-1为什么有双括号?
if offrating[0] - 1 <= or_rating[0]
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"
}