Ruby if语法(两个表达式)

Bil*_*ljk 3 ruby syntax if-statement

假设您使用的ifRuby语法如下:

if foo == 3: puts "foo"
elsif foo == 5: puts "foobar"
else puts "bar"
end
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,所以Ruby在if语句中执行两件事,比如说:

if foo == 3
    puts "foo"
    foo = 1
elsif foo = ...
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做,所以我可以使用第一个语法放两个语句?

Con*_*ion 5

if foo == 3: puts "foo"; puts "baz"
elsif foo == 5: puts "foobar"
else puts "bar"
end
Run Code Online (Sandbox Code Playgroud)

但是,我建议不要这样做.

  • 将多个命令放在由分号分隔的单行上是遇到难以发现的错误的绝对方法.在这个例子中,你不会忽略任何东西,但想象你将"foo"扩展为跨越相当一些水平空间的实际消息.然后你冒险忽视`; something_else`一直到右边.它不会在这里通过代码审查:) (3认同)

Mic*_*ski 5

Ruby允许分号在单行上分隔语句,因此您可以执行以下操作:

if foo == 3: puts "foo"; puts "bar"
elsif foo == 5: puts "foobar"
else puts "bar"
end
Run Code Online (Sandbox Code Playgroud)

为了整洁,我可能会终止两个语句;:

if foo == 3: puts "foo"; puts "bar";
elsif foo == 5: puts "foobar"
else puts "bar"
end
Run Code Online (Sandbox Code Playgroud)

除非你有一个很好的理由,否则我不会这样做,因为它对可读性有影响.if具有多个语句的普通块更容易阅读.