Ruby 2.0.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Moduleクラス > refine (private)

instance method Module#refine

refine(klass) { ... } -> Module[permalink][rdoc]

引数 klass で指定したクラスだけに対して、ブロックで指定した機能を提供で きるモジュールを定義します。定義した機能は Module#refine を使用せずに直 接 klass に対して変更を行う場合と異なり、限られた範囲のみ有効にできます。 そのため、既存の機能を局所的に修正したい場合などに用いる事ができます。

refinements 機能の詳細については以下を参照してください。

定義した機能は main.using を実行した場合のみ有効になります。

[PARAM] klass:
拡張する対象のクラスを指定します。
[RETURN]
ブロックで指定した機能を持つ無名のモジュールを返します。

[注意] refinements は 2.0 現在、実験的な機能として提供されています。以 降のバージョンで仕様が変更になる可能性があります。使用すると必ず警告が 表示されます。

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