2012-04-05 8 views
3

あなたはこのように書きRuby用if構文を使用しているとしましょう:言う、Rubyはif文で二つのことを実行してそれを行うための方法はありRubyの場合の構文(二つの表現)

if foo == 3: puts "foo" 
elsif foo == 5: puts "foobar" 
else puts "bar" 
end 

を、次のように:

if foo == 3 
    puts "foo" 
    foo = 1 
elsif foo = ... 

どのように私はそれは私が最初の構文を使用して二つの文を置くことができますすることができますか?

+1

代わりに、この具体的なケースでは、 'case'ステートメントを考えるかもしれません。 – Phrogz

+0

なぜこの質問はdownvotedでしたか? – Billjk

+1

なぜそれはすべて1行にする必要がありますか? 2番目の構文ははるかに良い、IMOを読み込みます。 –

答えて

5
if foo == 3: puts "foo"; puts "baz" 
elsif foo == 5: puts "foobar" 
else puts "bar" 
end 

しかし、私はそれに反対します。

+0

なぜあなたはそれに反対しているのですか?ちょうど興味がありますか? :〜) – Billjk

+3

複数のコマンドをセミコロンで区切って1行に置くことは、見つけにくいバグを見つけ出すための確かな方法です。この例では、何も見落とさずに、かなりの水平スペースに及ぶ実際のメッセージに "foo"を展開すると想像してください。それであなたは 'を見落とす危険を冒す。 something_else'を右に進めてください。ここでコードレビューを過ぎてもらうことはできません:) – Confusion

5

あなたが行うことができますので、Rubyは、単一のライン上の別々のステートメントにセミコロンを許可:

if foo == 3: puts "foo"; puts "bar" 
elsif foo == 5: puts "foobar" 
else puts "bar" 
end 

を整頓するためには、私はおそらく;で両方のステートメントを終了します:

if foo == 3: puts "foo"; puts "bar"; 
elsif foo == 5: puts "foobar" 
else puts "bar" 
end 

あなたが持っている場合を除き優れた理由は、読みやすさに影響するため、私はこれをしません。複数のステートメントを持つ通常のifブロックは読みやすくなります。

+1

+1正当な理由がない限り、実際にはこのようにコード化するべきではない方法に関するアドバイスを受けてください。 –

2

私はcase文がif文よりもはるかに良く見えると思う:

case foo 
when 3 
    puts "foo" 
when 5 
    puts "foobar" 
else 
    puts "bar" 
end 

そして、これは条件ごとに複数のステートメントが可能になります。