Вы можете попробовать подобные вещи в irb
:
>> if false
>> foo = "bar"
>> end
=> nil
>> foo
=> nil
Итак, вы можете видеть, что, хотя условие if
ложно, вводится переменная foo
(это nil
, которая будет обрабатываться так же, как false
в вашем if
, поэтому безопасны). Я подозреваю, что это потому, что операторы if
не вводят новую область видимости. См:
>> if true
>> bar = "baz"
>> end
=> "baz"
>> bar
=> "baz"
Одна заключительная мысль: если A
действительно просто логическое значение, вы можете установить flag = A
и вообще избежать if
.