[#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:122363] [Ruby Feature#21389] Simplify Set#inspect output

From: "Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date: 2025-06-01 19:55:35 UTC
List: ruby-core #122363
Issue #21389 has been updated by Eregon (Benoit Daloze).


Per https://bugs.ruby-lang.org/issues/21377#note-5 (that issue should have been linked BTW, I added it),
I strongly believe showing `Set[1, 2, 3]` instead of `MySet[1, 2, 3]` for an instance of MySet would be a mistake.

Array and Hash don't show the class name at all, then sure obviously they don't show the subclass name either.
No `inspect`, if it shows the class name, should ever show the wrong class name, i.e., not `obj.class.inspect`, that would just be intentional confusion and there is no reason for that.

The example with an anonymous subclass is unrepresentative of realistic usages so hardly matters in comparison.

BTW here is an example of a core class showing the subclass name:
```ruby
class MyModule < Module; end
p MyModule.new # => #<MyModule:0x00007f4e318e3ad8>
```

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

* 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