这是一个意想不到的发现.我之前没碰过的一个非常基本的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的一般解释,如果语句溢出到封闭的条件范围内.
如果你想放入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)