Ответ 1
Как и #any?
, как упоминалось в davidrac, ActiveSupport #present?, который больше похож на тест правды на других языках. Для nil
, false
, ''
, {}
, []
и т.д. Он возвращает false; для всего остального верно (включая 0, интересно).
Я понимаю, что могу делать
unless [1].empty?
Но мне интересно, есть ли способ?
Как и #any?
, как упоминалось в davidrac, ActiveSupport #present?, который больше похож на тест правды на других языках. Для nil
, false
, ''
, {}
, []
и т.д. Он возвращает false; для всего остального верно (включая 0, интересно).
Вы можете использовать [1].any?
, который фактически определен в Enumerable
Обратите внимание, что это не сработает, если ваш массив содержит только нулевые или ложные значения (спасибо за комментарий @InternetSeriousBusiness).
[nil].any?
=> false
[nil].any? {|something| true}
=> true
[].any? {|something| true}
=> false
[false, false].any? {|something| true}
=> true
[nil, 'g'].any? {|something| true}
=> true
Проверить элементы в массиве:
.empty?
.present?
если a = {}
a.any?.nil?
приведет к ложному.
Чтобы проверить, имеет ли поле значение, отличное от нуля:
.present?
.nil?
.any?