これはなぜ機能しないのですか?なぜ "> 2"で "大文字小文字"が使えないのですか?
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
これはなぜ機能しないのですか?なぜ "> 2"で "大文字小文字"が使えないのですか?
case ARGV.length
when 0
abort "Error 1"
when > 2
abort "Error 2"
end
if
文は、決定的な範囲/値を持っていないので、おそらく、あなたのコードのために、よりフィットすることではなく、単なる大なります:
if ARGV.length == 0
abort "Error 1"
elsif ARGV.length > 2
abort "Error 2"
end
有効なルビ構文ではないため、うまくいきません。ただし、この操作を行うことができます。
x = 15
case x
when 0..9 then puts "good"
when 10..12 then puts "better"
when 13..200 then puts "best"
else
puts "either great or poor"
end
これは有効なルビ構文ではありません。あなたが必要なもの
は
case
when ARGV.length == 0
abort "Error 1"
when ARGV.length > 2
abort "Error 2"
end
であるあなたがcase x
を書くとき、あなたが理解する必要がある重要な部分は、ルビーは、xを取り、その後、あなたがwhen
句に挿入する引数または式との比較を適用することです。あなたはwhen x >2
は以下のようにルビーする読み込み言う
ライン:あなたはcase
文から特定のオブジェクトを削除すると
if ARGV.length == > 2
は、あなたがwhen
ステートメント内で条件文を適用することができます。
Ruby 1.8.7 + irb 0.9.5レポート(irb):4:OPの元の命令セットで構文エラー、予期しない '>'が発生しました。私の答えには、作業中の書き換えられた命令セットが含まれています。 –
.rbファイルで試しましたが、構文エラーが表示されます。 *&^^%&^ IRB。 – Zabba
実際、ここで迷惑なのは、自分の主張を裏付けるための決定的な文書を見つけることができないということです。 rubyspec.orgとruby-doc.orgは役に立ちません。私が見つけることができる言語構文仕様は、このケースをカバーしていないようです。 –
使用1.0/0.0
に@ moschのコードを修正無限大を取得するには:
case ARGV.length
when 0
raise "Too few"
when 3..(1.0/0.0)
raise "Too many"
end
あなたは浮動小数点ゼロ除算するチャック・ノリスをする必要はありません。
'(1.0/0.0) 'ではなく、' Float :: INFINITY'を使うことができます。ルビ1.9.3。 –
特定のコードを修正するにはどうすればよいですか?ありがとう。 – emurad
私にとって理にかなっているのは、あなたのものだけです。本当にイディオムでエレガントです。それは私が使ったものです。 –