Проверьте, все ли значения массива соответствуют условию - PullRequest
0 голосов
/ 07 мая 2018

Я знаю, что пустая строка будет считаться правдивой, поскольку только ноль и ложь считаются ложными. Но у меня есть массив пустых строк, таких как:

["", "", ""].any?
 => true 

И я хочу, чтобы он возвращал false, если все строки в массиве пусты. Один из вариантов сделать это:

["", "", ""].select {|item| item.present? }.any?
 => false 

Но сейчас я использую два итератора в этом примере. Это единственный способ? Или есть другой итератор в арсенале инструментов, который подходит для работы?

Ответы [ 3 ]

0 голосов
/ 07 мая 2018

Вы могли бы написать

arr.join != ''
0 голосов
/ 07 мая 2018

В моей голове логика будет такой: «они не все пусты», поэтому я бы поставил

arr = ["","",""]

!arr.all?(&:empty?)

=> false

Использование .present? для строки не работает в моей тестовой среде.

0 голосов
/ 07 мая 2018

any должен занять блок, поэтому вы должны иметь возможность сделать что-то вроде:

["", "", ""].any? {|item| item.present?}

Это можно сократить, используя метод to_proc для символа present? (кредит: @ mu слишком короткий , 2018):

['','',''].any?(&:present?)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...