3

if次のようなRubyの構文を使用しているとしましょう:

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

Ruby が if ステートメントで 2 つのことを実行するようにする方法はありますか。たとえば、次のようにします。

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

最初の構文を使用して 2 つのステートメントを挿入できるようにするにはどうすればよいですか?

4

3 に答える 3

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

しかし、私はそれに反対することをお勧めします。

于 2012-04-05T19:49:25.480 に答える
5

Ruby では、セミコロンを使用して 1 行のステートメントを区切ることができるため、次のことができます。

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ブロックは、はるかに読みやすくなっています。

于 2012-04-05T19:50:05.797 に答える
2

case ステートメントは if ステートメントよりもはるかに優れていると思います。

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

これにより、条件ごとに複数のステートメントを使用できます。

于 2012-04-06T02:25:37.740 に答える