以下の内容はhttps://blog.tmtms.net/entry/202212-ruby32-16より取得しました。


Ruby 3.2 - リファインメント

Ruby 3.2 アドベントカレンダーの16日目の記事です。

qiita.com


リファインメント

Module#used_refinements

Feature #14332: Module.used_refinements to list refinement modules - Ruby master - Ruby Issue Tracking System

Module.used_refinements が追加された。現在のスコープで有効な Refinement オブジェクトを返す。

module Hoge
  refine Integer do
  end
end

module Fuga
  refine String do
  end
end

Module.used_refinements  #=> []
using Hoge
Module.used_refinements  #=> [#<refinement:Object@Hoge>]
using Fuga
Module.used_refinements  #=> [#<refinement:Object@Fuga>, #<refinement:Object@Hoge>]

Module#refinements と Refinement#refined_class

Feature #12737: Module#defined_refinements - Ruby master - Ruby Issue Tracking System

Module#refinements はモジュール内で定義されている Refinement オブジェクトを返す。

module Hoge
  refine Integer do
  end
  refine String do
  end
end

Hoge.refinements  #=> [#<refinement:Integer@Hoge>, #<refinement:String@Hoge>]

Refinement#refined_class はリファインされてるクラスを返す。

module Hoge
  refine Integer do
  end
  refine String do
  end
end

r1, r2 = Hoge.refinements
r1.refined_class  #=> Integer
r2.refined_class  #=> String



以上の内容はhttps://blog.tmtms.net/entry/202212-ruby32-16より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14