如何根据if-then决策树设置ruby变量

时间:2014-01-20 08:24:56

标签: ruby syntax

我想写下以下内容:

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礼仪是否应该删除这个问题,欢迎提出建议。

感谢您的快速回复。

2 个答案:

答案 0 :(得分:4)

不要让它变得复杂!写作

没有错
variable = 
  if    x then a
  elsif y then b
  else  c
end

没有人会看这个代码而不知道发生了什么。

答案 1 :(得分:1)

有两个主要变体:

  1. 使用if-else-end树:

    variable =
    if x
      a
    else
      if y
        b
      else
        c
      end
    end
    
  2. 并作为逻辑布尔代数表达式:

    variable = x && a || ( y && b || c )
    

    这与:

    相同
    variable = x && a || y && b || c
    
  3. 通常首选第一个变体,然后在if-else-end块内使用复杂的代码或计算。第二,当使用简单的读/逻辑结构时。

    如果您的表达式出现错误或结果无效,请检查您的逻辑表达式。