写漂亮&一致的多线条件?

时间:2015-07-18 10:28:22

标签: ruby

为了更好的可读性,我通常更喜欢在if语句中编写多行条件,如下所示:

if
  something == nice and
  anotherthing == bad
then
  do_something
  and_so_on
end

我目前正面临while - 循环(在我无法避免的情况下)并且必须使用多个条件。我尝试了以下内容并获得了相应的syntax error, unexpected keyword_do_block (SyntaxError)

while
  something == nice and
  anotherthing == bad
do
  do_something
  and_so_on
end

事实证明,可选的do - 关键字无法独立于下一行,与then - 关键字相反。这是它的工作原理 - 将do放在前一行的末尾之后:

while
  something == nice and
  anotherthing == bad do

  do_something
  and_so_on
end

为了理解可读性,这可能不像对应的if - 语句那样可读,而#34;强制执行"换行符并再次强调缩进。

我是否错过了替代语法和/或它可能是Ruby语法设计中的一个缺陷(不应该将do放入下一行)?< / p>

1 个答案:

答案 0 :(得分:2)

您可以使用begin end while语法,您的条件将在语句的末尾,但作为if语句:

begin
  do_something
  and_so_on
end while
  something == nice and
  anotherthing == bad

但在这种情况下,它会在检查条件之前执行一次

你可以改变它,它会起作用:

while
  something == nice and
  anotherthing == bad
  begin
    do_something
    and_so_on
  end 
end
祝你好运!