如何根据 if-then 决策树设置 ruby 变量
Posted
技术标签:
【中文标题】如何根据 if-then 决策树设置 ruby 变量【英文标题】:How to I set a ruby variable based on an if-then decision tree 【发布时间】:2014-01-20 08:24:55 【问题描述】:我想写以下内容:
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 顺便说一句
编辑:错误警报。在我的示例中, c 设置为 nil,我认为这是错误的。我原来的语法运行良好。我不确定是否应该删除这个问题的 *** 礼仪,欢迎提出建议。
感谢您的快速回复。
【问题讨论】:
一旦回答将有投票权,你不能删除这个.. :) 【参考方案1】:不要让它变得复杂!写出来没毛病
variable =
if x then a
elsif y then b
else c
end
没有人会看这段代码,不知道发生了什么。
【讨论】:
为了清楚起见,可能会尝试这样做。事实证明,我原来的方法也很有效 这很好,如果代码块只有一条语句.. 对于多行块代码,不是一个好的选择。 好吧,当然,如果您需要插入更长的代码,您可以跳过then
关键字并使用新行和缩进代替,否则嵌套 if 语句和 elsif 之间没有区别.【参考方案2】:
主要有两种变体:
使用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
块内使用复杂的代码或计算。第二,当使用简单的读/逻辑结构时。
如果您的表达式有错误或得到无效结果,请检查您的逻辑表达式。
【讨论】:
谢谢,您的第一个变体与我的几乎相同。事实证明两者都有效。 +1 用于提及 通常首选第一个变体,然后您在 if-else-end 块中使用复杂的代码或计算。以上是关于如何根据 if-then 决策树设置 ruby 变量的主要内容,如果未能解决你的问题,请参考以下文章