Ruby Else从未进入IF ELSE声明

时间:2013-05-01 21:05:09

标签: ruby

我认为这将是一段相当简单的代码。但是,“else”以下代码并不完全是我的,但它说明了块的结构:

adHoc = true

if blah...
   adHoc = false
end

if blah...

   if adHoc
      my_logger.info("REACHED WHENEVER ADHOC IS TRUE")
   else 
      my_logger.info("NEVER REACHED")
   end

end

为什么其他部分永远不会到达?

谢谢。

1 个答案:

答案 0 :(得分:2)

追踪可能性,只有4种情况:

  1. blah ...在两次通话中均为真。
  2. blah ...两次来电都是假的
  3. blah ...第一个是真的,第二个是
  4. blah ...第一个是假的,第二个是真的。
  5. 情景1。

      

    blah true adhoc 设置为 false 。记录从未到达。

    情景2。

      

    blah false adHoc 设置为 true 。这里没有记录任何内容。

    情景3。

      

    blah true adHoc 设置为 false 。没有记录任何内容,因为第二个错误是错误的。

    情景4。

      

    blah false adHoc 设置为 true
      对blah的第二次调用是真实的,并且“记录了ADHOC是真的”。


    正如您所看到的,显示“REACHED WHENEVER ADHOC TRUE”的唯一方法是在场景4中,在调用之间blah ......从false变为true。


    对于场景3或4,一种可能性......:

      

    ObjectSpace.count_objects [:T_NODE] .odd?