2013-05-01 26 views
0

达到我有什么,我会觉得这是一个非常简单的一段代码。然而,“其他”下面的代码并不完全是我的,但它说明了块的结构化:红宝石否则永远的if 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 

怎么来的其他部分永远不会到达?

谢谢。

+8

因为'adHoc'为false时'blah'总是假? – 2013-05-01 21:08:50

+0

什么是第一个等等......? adHoc = false可能永远不会被调用。 – davidrac 2013-05-01 21:09:03

+0

你在你的日志中看到了什么?为什么你决定只有其他部分永远不会到达?你有没有看过_REACHED WHENEVER ADHOC是TRUE_? – lifus 2013-05-01 21:09:57

回答

2

跟踪通过的可能性,只有4个情况:

  1. 等等...是两个通话真。
  2. 等等...是假的两个要求
  3. 等等...是第一和虚假第二
  4. 嗒嗒真的......是第一和真正的第二假的。

方案1.

等等即席设置为。永远不会被记录。

场景2.

等等ADHOC设置为。这里没有记录。

方案3.

等等ADHOC设置为。没有记录,因为第二个等号是错误的。

场景4.

等等ADHOC设置为
第二次调用嗒嗒“每当ADHOC是真实达到”记录是真实。


正如你所看到的,为的唯一途径“达到WHENEVER ADHOC是真实的”要显示在场景4中等等...从虚假到电话之间的真实变化。对于等等...对于场景3或4


一种可能性是:

ObjectSpace.count_objects [:T_NODE] .odd?