Ruby if ifeliner inside if语句产生错误

Joh*_*tta 2 ruby if-statement

这是一个意想不到的发现.我之前没碰过的一个非常基本的Ruby问题:

a = "a"

if a
  test = "yes" if a == "a" else "no"
else
  test = "no"
end
Run Code Online (Sandbox Code Playgroud)

运行它会产生错误:

syntax error, unexpected kELSE, expecting kEND
Run Code Online (Sandbox Code Playgroud)

看起来嵌套的oneliner溢出到封闭的if语句中.这是什么通用的解决方案?在爆炸的if语句中没有使用oneliner?(它在爆炸封闭的条件时起作用,因为它由end关键字终止.

顺便说一句,这是一个最小化的人为例子,所以不需要解释它的愚蠢或问题为什么我这样做.我正在寻找一个关于如何防止ruby oneliner的一般解释,如果语句溢出到封闭的条件范围内.

Nak*_*lon 6

如果你想放入if else一行,请使用then如下:

if a then b else c end
Run Code Online (Sandbox Code Playgroud)

并且,如果你愿意,你可以使用;而不是then像这样:

if a ; b else c end
Run Code Online (Sandbox Code Playgroud)

此外,有时您可以使用此代替?::

a && b || c
Run Code Online (Sandbox Code Playgroud)