0

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私が試したマッピング(上記)を参照していますが、それを機能させることができません。

4

3 に答える 3

2

Youroffratingは配列であり、or_ratingさらに別の配列です。

そして、あなたはやろうとしています

Array - FixNum <= Array

したがって、1(FixNum) をArrayto do-および比較に変換しようとするため、エラーが発生します。

常に単一の要素配列を期待offratingor_ratingて返す場合は、次のことができます。

offrating[0] - 1 <= or_rating[0]
于 2013-06-09T05:21:30.087 に答える
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

于 2013-06-09T08:00:36.500 に答える
0

scan配列を返します。あなたが直面している問題はそのoffrating - 1部分です。

から数値 1 を減算しようとしていArrayます。インデクサーを追加すると、次のようになります

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

エラーは解消されるかもしれませんが、それで期待どおりの結果が得られるかどうかはわかりません。

于 2013-06-09T05:24:36.260 に答える