Discussion:
[ruby-core:104162] [Ruby master Feature#12075] some container#nonempty?
m***@ruby-lang.org
2021-06-04 06:04:01 UTC
Permalink
Issue #12075 has been updated by mame (Yusuke Endoh).


I like `Array#some?` and `Hash#some?`. It is so frequent to write `!ary.empty?`.

I think the main concern is only about `empty?`, not other predicate methods. So I'm skeptural about the need of the generalization like `ary.not(:empty?)`. I don't like it very much because it is longer and slower than the dedicated method.

----------------------------------------
Feature #12075: some container#nonempty?
https://bugs.ruby-lang.org/issues/12075#change-92337

* 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: <mailto:ruby-core-***@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mai
s***@gmail.com
2021-06-04 08:37:47 UTC
Permalink
Issue #12075 has been updated by sawa (Tsuyoshi Sawada).


I want to mention that some of the method names proposed so far would break symmetry.

Note that "empty" is a property of the container, not the elements. When you have `a = []; b = [1]`, what is questioned whether it is empty or not is `a` and `b`, but not `1`. Among the words proposed so far, "any" and "some" are not a property of the container, but are a word used together with the elements, e.g., "some element 1". "present" in this respect is also not appropriate because it is a property of the element ("1 is present"), not the container (not "`a` is present"). If the method in question is to be defined as the negation of `empty?`, then its name should be a property of the container.

Among the words proposed so far, "non-empty" and "not empty" would work. Another word that comes to mind is "occupied", but it may be too long.

----------------------------------------
Feature #12075: some container#nonempty?
https://bugs.ruby-lang.org/issues/12075#change-92338

* 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: <mailto:ruby-core-***@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/c

Loading...