From: sawadatsuyoshi@... Date: 2020-05-06T16:34:13+00:00 Subject: [ruby-core:98151] [Ruby master Feature#16833] Add Enumerator#empty? Issue #16833 has been updated by sawa (Tsuyoshi Sawada). Not sure what you mean by >Enumerator, something mixed into Array Do you mean this? >Enumerator, which is mixed into Array If that was what you meant, then that is not the case. `Array` mixes-in `Enumerable`, not `Enumerator`. ---------------------------------------- Feature #16833: Add Enumerator#empty? https://bugs.ruby-lang.org/issues/16833#change-85391 * Author: f3ndot (Justin Bull) * Status: Open * Priority: Normal ---------------------------------------- It was surprising to me that Enumerator, something mixed into Array, does not include `#empty?`. I think it is reasonable to assume people may have to guard iterating and other logic based on the emptiness of an enumerator, such was my case. ``` ruby # pretend there's convoluted enumerator logic to produce this structure table_rows = [{ data: ['First', 'Second', 'Third'], config: {} }, { data: [4, 5, 6], config: { color: 'red' } }].to_enum return if table_rows.empty? table_header = table_rows.first[:data] # requires an empty guard # ... ``` I propose that it simply behaves as `#take(1).to_a.empty?` instead of aliasing to something like `#none?` because of falsey elements or `#size == 0` because of potential `nil` returns: ```ruby [].to_enum.empty? # => true [false].to_enum.empty? # => false [nil].to_enum.empty? # => false [0].to_enum.empty? # => false [1, 2, 3].to_enum.empty? # => false ``` ---Files-------------------------------- add-enumerable-empty.patch (1.99 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: