我想写下以下内容:
variable = if x
a
else
if y
b
else
c
end
end
如果x为真,则变量等于a。如果x为假且y为真,则变量等于b。如果x和y都为假,则变量等于c。
我认为这是有效的ruby语法,但是当我尝试它时,变量总是设置为nil。这是为什么以及如何正确设置?
我正在使用ruby 1.9.3 btw
编辑:FALSE ALARM。在我的例子中,c被设置为nil,我认为这是错误的。我的原始语法运行正常。我不确定StackOverflow礼仪是否应该删除这个问题,欢迎提出建议。
感谢您的快速回复。
答案 0 :(得分:4)
不要让它变得复杂!写作
没有错variable =
if x then a
elsif y then b
else c
end
没有人会看这个代码而不知道发生了什么。
答案 1 :(得分:1)
有两个主要变体:
使用if-else-end
树:
variable =
if x
a
else
if y
b
else
c
end
end
并作为逻辑布尔代数表达式:
variable = x && a || ( y && b || c )
这与:
相同variable = x && a || y && b || c
通常首选第一个变体,然后在if-else-end
块内使用复杂的代码或计算。第二,当使用简单的读/逻辑结构时。
如果您的表达式出现错误或结果无效,请检查您的逻辑表达式。