Что такое идиоматический способ удалить false и nil из массива в Ruby? - PullRequest
1 голос
/ 05 июня 2019

Я придумал

ary.select{|v| v}

Но есть ли что-нибудь лучше?

Ответы [ 2 ]

6 голосов
/ 05 июня 2019

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

ary - [ nil, false ]

В Ruby 2.2 вы также можете сделать это, чтобы удалить falsey значения:

ary.select(&:itself)

Хотя это на самом деле не короче.

Вы также можете сделать:

ary.delete(nil)
ary.delete(false)

, который выполняет модификацию на месте.

1 голос
/ 05 июня 2019

Есть Array#compact, но это удалит только nil значения или reject, если вы хотите быть более точным в том, что вы здесь делаете, но в остальном ваше предложение довольно идиоматично.

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