1

入力が 42 のときにユーザーからの入力を停止しようとしています。

私が取り組んでいるウェブサイトの正解は次のとおりです。

while line = gets   
  break if (/42/ =~ line)
  x << line 
end

私が試したコードは次のとおりです。

while line = gets.chomp
  break if (line == 42)
  x << line 
end

これはなぜですか?ifステートメントで使用できるものにいくつかの制限がありませんか?

4

4 に答える 4

0
until (line = gets.chomp).to_i == 42   
  x << line 
end

もちろん、これはあなたが求めていたifステートメントをバイパスします。

if の制限は、常に文字列である文字列を数値と比較しているという事実のみに基づいており、これは決して等しくなりません。(他の方もおっしゃっている通り)

したがって、条件ステートメントを再検討する必要があります。この場合、私はそれを「場違い」と見なし、比較を「while」ループに移動してから「until」ステートメントに反転させて、ループを終了する条件を積極的に表現できるようにしました。ループを抜ける条件は、できればループ条件で表現する必要があるため、ループに「ブレーク」が見られるときはいつでも、その匂いを取り除こうとします。

これが役立つことを願っています。

于 2013-05-09T08:19:03.070 に答える