为了更好的可读性,我通常更喜欢在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>
答案 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
祝你好运!