Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Moduleクラス > refine (private)
refine(klass) { ... } -> Module
[permalink][rdoc]引数 klass で指定したクラスだけに対して、ブロックで指定した機能を提供できるモジュールを定義します。定義した機能は Module#refine を使用せずに直接 klass に対して変更を行う場合と異なり、限られた範囲のみ有効にできます。そのため、既存の機能を局所的に修正したい場合などに用いる事ができます。
refinements 機能の詳細については以下を参照してください。
定義した機能は main.using, Module#using を実行した場合のみ有効になります。
class C
def foo
puts "C#foo"
end
end
module M
refine C do
def foo
puts "C#foo in M"
end
end
end
x = C.new
x.foo # => "C#foo"
using M
x = C.new
x.foo # => "C#foo in M"
[SEE_ALSO] main.using