[#122369] [Ruby Bug#21392] Data classes do not allow overriding #inspect — "austin (Austin Ziegler) via ruby-core" <ruby-core@...>

Issue #21392 has been reported by austin (Austin Ziegler).

8 messages 2025/06/01

[#122411] [Ruby Bug#21396] Set#initialize should call Set#add on items passed in — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #21396 has been reported by tenderlovemaking (Aaron Patterson).

12 messages 2025/06/04

[#122506] [Ruby Feature#21435] Kernel#optional as a conditional #then — "Alexander.Senko (Alexander Senko) via ruby-core" <ruby-core@...>

SXNzdWUgIzIxNDM1IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IEFsZXhhbmRlci5TZW5rbyAoQWxleGFu

11 messages 2025/06/10

[#122557] [Ruby Bug#21445] [BUG] push_mark_stack() called for broken object raised since cd9f447be247478d2eb3da985295735cce20cb23 — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

Issue #21445 has been reported by yahonda (Yasuo Honda).

10 messages 2025/06/19

[#122615] [Ruby Misc#21458] Test 'make install'? — "MSP-Greg (Greg L) via ruby-core" <ruby-core@...>

Issue #21458 has been reported by MSP-Greg (Greg L).

11 messages 2025/06/28

[ruby-core:122437] [Ruby Feature#21389] Simplify Set#inspect output

From: "matz (Yukihiro Matsumoto) via ruby-core" <ruby-core@...>
Date: 2025-06-05 08:47:26 UTC
List: ruby-core #122437
Issue #21389 has been updated by matz (Yukihiro Matsumoto).


I prefer `Set[1, 2, 3]` to `#<Set: {1, 2, 3}>`. And the name of the subclass should be printed, e.g. `MySet[1, 2, 3]`.

Matz.


----------------------------------------
Feature #21389: Simplify Set#inspect output
https://bugs.ruby-lang.org/issues/21389#change-113618

* Author: jeremyevans0 (Jeremy Evans)
* Status: Open
----------------------------------------
As Set is now a core collection class, it should have special inspect output.  Ideally, inspect output should be suitable to eval, similar to array and hash (assuming the elements are also suitable to eval):

```ruby
set = Set[1, 2, 3]
eval(set.inspect) == set # should be true
```

The simplest way to do this is to use the Set[] syntax:

```ruby
Set[1, 2, 3].inspect
# => "Set[1, 2, 3]"
```

I've submitted a pull request that implements this: https://github.com/ruby/ruby/pull/13488

The pull request deliberately does not use any subclass name in the output, similar to array and hash. I think it is more important that users know they are dealing with a set than which subclass:

```ruby
Class.new(Set)[]
# PR does: Set[]
#     not: #<Class:0x00000c21c78699e0>[]
```

However, it's easy to change the PR to use a subclass name if that is desired.



-- 
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/lists/ruby-core.ml.ruby-lang.org/


In This Thread

Prev Next