📘

[Bug #21377] 開発版の Ruby 3.5-dev で Set#inspect が継承されたクラス名を参照しないというバグ報告

に公開

[Bug #21377] core Set#inspect does not use inherited class name

  • 開発版の Ruby 3.5-dev で Set#inspect が継承されたクラス名を参照しないというバグ報告
class MySet < Set
end

pp MySet.new.inspect
# Ruby 3.4 => "#<MySet: {}>"
# Ruby 3.5 => "#<Set: {}>"
  • これは Set がコアクラスに移動された影響なんですが期待する挙動らしい
  • とはいえ個人的にはサブクラスの情報がある方がわかりやすいことが多いので #<Set:MySet {}> みたいな名前だとわかりやすかったりするのかなー
  • そもそも Set#inspect のフォーマットを Set[1, 2, 3] みたいにする話も出ているのでそっちはまた別チケで話されていますね
  • 最終的には『サブクラスの名前』を参照するように対応されました
class MySet < Set
end

pp MySet.new.inspect
# Ruby 3.4 => "#<MySet: {}>"
# Ruby 3.5 => "MySet[]"
GitHubで編集を提案

Discussion