Есть ли "причудливый" Ruby способ проверить, определена ли локальная переменная и имеет ли она значение true, не используя ands и ors? - PullRequest
0 голосов
/ 07 января 2011

Это довольно быстрый вопрос. Я в настоящее время использую *

do_this if (testvar ||= false)

Что отлично работает.

Но этот подход нервирует меня, потому что, будучи быстрым, он не закорачивает, как defined?(testvar) && testvar, а создает и присваивает значение локальной переменной, которая впоследствии никогда не используется, что кажется неэффективным.

Мне нравится очень разумный факт, что переменные экземпляра равны нулю до присваивания, но я бы хотел, чтобы ситуация была такой же легкой для локальных переменных.

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

Ответы [ 2 ]

2 голосов
/ 08 января 2011

Я не знаю о "причудливом" способе, но есть явный способ, который иногда лучше, чем воображаемый, ИМХО.

0 голосов
/ 07 января 2011

Как насчет:

do_this unless testvar.nil?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...