From: "austin (Austin Ziegler)" Date: 2021-08-19T15:00:46+00:00 Subject: [ruby-core:105012] [Ruby master Feature#12075] some container#nonempty? Issue #12075 has been updated by austin (Austin Ziegler). I���m not entirely sure we need a new method for this, because we could always use `ary.size.nonzero?` or `ary.size.positive?`. It is also possible to tell the difference between an empty vs non-empty array with `[nil].any? { true }` and `[].any? { true }`. The advantage to `#size.nonzero?` or `#size.positive?` is that it works on String, Hash, and Array. It might work on a lot of enumerables, but only if they respond to `#size` and `#size` doesn���t require enumeration. It even works on endless ranges (`(3..).size.positive?`). Of the suggested methods, I think I like `#nonempty?` best, and `#size?` second-best. I like `#some?` least because it is confusing with `any?`. ---------------------------------------- Feature #12075: some container#nonempty? https://bugs.ruby-lang.org/issues/12075#change-93415 * Author: naruse (Yui NARUSE) * Status: Feedback * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- I sometimes write following code. ```ruby ary = some_metho_returns_nil_or_empty_container() # nil or "" or [] or {} if ary && !ary.empty? # some code end ``` But the condition `ary && !ary.empty?` is too long and complex. Though Ruby 2.3 introduces `&.`, but this can���t be written as `ary&.empty?`. One idea is add `nonempty?` write as `ary&.nonempty?`. akr: `nonempty?` is not good name because human is not good at handling This discussion matches following core classes: * String * Array * Hash -- https://bugs.ruby-lang.org/ Unsubscribe: