Ruby Else никогда не достигает в заявлении IF ELSE

81
5

У меня есть то, что я думаю, было бы довольно простой частью кода. Тем не менее, "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

Какая же часть еще не достигнута?

Спасибо.

спросил(а) 2013-05-02T00:05:00+04:00 7 лет, 5 месяцев назад
1
Решение
70

Проследите через возможности, есть только 4 случая:

бла... верно для обоих вызовов. blah... false для обоих вызовов бла... верно на первом и ложном на втором бла... ложно на первом и верно на втором.

Сценарий 1.

бла это правда. Для adhoc установлено значение false. NEVER REACHED записывается в журнал.

Сценарий 2.

blah false, adHoc установлен в true. Здесь ничего не регистрируется.

Сценарий 3.

blah is true, adHoc установлен в false. Ничего не регистрируется, потому что 2-й блаш является ложным.

Сценарий 4.

blah false, adHoc установлен в true.
Второй вызов blah является истинным, и "REACHED WHENEVER ADHOC IS TRUE" регистрируется.

Как вы можете видеть, единственный способ отображения "REACHED WHENEVER ADHOC IS TRUE" - это сценарий 4, где blah... изменяется от false до true между вызовами.

Одна возможность для бла... для сценариев 3 или 4:

ObjectSpace.count_objects [: T_NODE].odd?

ответил(а) 2013-05-02T06:09:00+04:00 7 лет, 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема