ルビー:未定義のメソッド `>」
-
21-08-2019 - |
質問
私はルビーを学び始め、私は今日の問題に遭遇します。
numResults = /\d+/.match(ie.div(:id, 'results_label').text)
puts "Results found: "+numResults.to_s
while(numResults > 0)
.
. some more code
.
私は私の出力にこのエラーが表示されます。
Exception: undefined method `>' for #<MatchData:0x424c6d4>
どの私はIRBにwhileループを作り、それがうまく働いたので、本当に不思議です。 プログラムが条件でスティックので、私は実行するループ内のコードを取得することはできません。
誰もが間違っているのか知っている?
解決
numResults
はMatchData
オブジェクトであると>
方法と比較することはできません。あなたは、その後、それを文字列に変換する文字列を数値に変換する必要があります:
while(numResults.to_s.to_i > 0)
他のヒント
文字列が表現に一致しない場合には、
numResults
がnil
されます。
あなたがテストしているものthatsのは、あなたがたいと思うので、もし
while( !numResults.nil? ){
}
文字列はのないの表現にマッチする場合には、numResults
はnil
されず、あなたが繰り返しを持っていないので、さらに、1つだけで、ほとんどここでは一致の数を(含まれていますnumResults.size
で一致)
また、他のポスターはnumResults
が見つかったマッチのない番号が含まれていませんが、テキストデータからの実際のの試合の値が含まれていることを心に留めておく必要があります。
一方で
numResults.to_s.to_i
唯一の原因nil.to_s.to_i == 0
の恵みに、動作する可能性があります。
numResults
に頼っていた場合は、、あなたは間違った場所で探していた。
にごwhile条件を変更してみてください
while(numResults.to_i > 0)
これは整数にnumResultsを強制します。それはあなたの文字列の正規表現マッチャーとして返されているように見えます。
所属していません StackOverflow