1

我知道这个问题已经在其他地方提到过,但是我对if elseruby​​ 中多行(块?)语句的正确语法有点困惑。

举个例子:

if condition then
  do something
  do somethingelse
  do yetanotherthing
  done
else
  do acompletelyunrelatedthing
done

我知道then如果使用多行,则该语句是必需的,但是done之前是else必需的吗?这似乎会脱离if...else上下文。当我包含这个时,done我得到:

syntax error, unexpected '\n', expecting tCOLON2 or '[' or '.'

当我不包括它时,我得到:

syntax error, unexpected keyword_else, expecting keyword_end

4

2 回答 2

5

嗯... Ruby 中没有done关键字。这是正确的语法:

if condition
  # do stuff
else
  # do other stuff
end

then也不需要关键字。

于 2013-04-21T22:44:15.287 回答
0

仅当then您需要将整个内容放在一行上时才使用关键字(将条件与如果为真则采取的操作分开):

if condition then do_something else do_something_different end

如果您不想要全部一行(通常您不想要),则语法与 Doorknob 的答案相同。

于 2013-04-21T23:29:39.237 回答