3

假设您正在使用这样if的 Ruby 语法:

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

有没有办法让Ruby在if语句中执行两件事,比如:

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

我怎样才能做到这一点,以便我可以使用第一种语法放入两条语句?

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 允许用分号分隔一行中的语句,因此您可以:

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 回答