Это довольно быстрый вопрос. Я в настоящее время использую *
do_this if (testvar ||= false)
Что отлично работает.
Но этот подход нервирует меня, потому что, будучи быстрым, он не закорачивает, как defined?(testvar) && testvar
, а создает и присваивает значение локальной переменной, которая впоследствии никогда не используется, что кажется неэффективным.
Мне нравится очень разумный факт, что переменные экземпляра равны нулю до присваивания, но я бы хотел, чтобы ситуация была такой же легкой для локальных переменных.
РЕДАКТИРОВАТЬ: * & ndash; это огромная ложь. Я не знаю, почему я это сказал. Я не использую testvar ||= false
. Это было бы глупо. Однако я использовал testvar rescue false
, у которого не так много уродливых побочных эффектов (не так ли?).