и цепь не работает должным образом - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь реорганизовать мой код:

test_cases.select{ |x| x.script && x.script.versions && !x.script.versions.empty? }

и использовать гем andand.Базовое использование просто говорит нам, что мы подставляем andand к && (то есть к имени), поэтому я попробовал это:

test_cases.select{ |x| !x.andand.script.andand.script_versions.andand.empty? }

, но кажется, что это НЕ целое утверждение (я только что понял это сейчас, когда писалвопрос)

Значит ли это, что я должен отделить пустое?статья?Есть ли функция andand, которая проверяет нет (но только последнюю?)

Ответы [ 3 ]

0 голосов
/ 29 марта 2011

Я фактически использовал это предложение, и оно работает:

test_cases.map{ |x| x.script.andand.versions && !x.script.versions.empty? }.none?

только один вызов andand и использованная карта вместо select

0 голосов
/ 29 марта 2011

Когда x не nil, это работает хорошо, я думаю. Проблема в том, что x равно nil, поскольку ...empty? возвращает также nil и !nil -> true. Тогда это x неправильно выбрано. Я бы предложил явную проверку логического значения:

 test_cases.select { |x| x.andand.script.andand.versions.andand.empty? == false }

Или, возможно, лучше использовать пробел / подарок без последнего и :

 test_cases.select { |x| x.andand.script.andand.versions.present? }
 test_cases.reject { |x| x.andand.script.andand.versions.blank? }

Примечание: здесь это не связано с проблемой, но я предпочитаю Ick возможно вместо и , так как только nil рассматривается как "void" (false является законное значение, которое, я думаю, не должно быть прокси).

0 голосов
/ 29 марта 2011

Вы всегда можете сделать

test_cases.select{ |x| x.andand.script.andand.script_version } unless x.empty?

По теме andand: хотя мы используем его в нашем проекте, и мне это, как правило, очень нравится, я обнаружил, что ложное использование andand может скрывать проблемы, которые следует должным образом решать. Как и многие хорошие инструменты, его следует использовать с осторожностью.

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