[ruby-core:113924] [Ruby master Feature#16833] Add Enumerator#empty?
From:
"ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>
Date:
2023-06-17 04:59:31 UTC
List:
ruby-core #113924
Issue #16833 has been updated by ioquatix (Samuel Williams).
Assignee set to ioquatix (Samuel Williams)
----------------------------------------
Feature #16833: Add Enumerator#empty?
https://bugs.ruby-lang.org/issues/16833#change-103577
* Author: f3ndot (Justin Bull)
* Status: Open
* Priority: Normal
* Assignee: ioquatix (Samuel Williams)
----------------------------------------
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/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/