1

以下の2つの方法がいくつかの例でどのように機能するかを理解するために、誰か助けてもらえますか?

  • Module#Refine
  • モジュール#使用
4

1 に答える 1

2

「絞り込み」に関しては、「絞り込み」という名前の「実験的」機能の一部です。改良は、Ruby 2.0 コア仕様の一部ではありません。その価値と結果は、さまざまな Ruby 実装者の間でまだ議論されています (Ruby には、そのコア実装である "MRI" (JRuby、Rubinius など) 以外にも多くの機能があることを思い出してください)。

改良 (仕様でいつか到着する必要があります) により、ある種の「ローカル モンキー パッチ」が可能になり、特定のモジュールのスコープ内でのみ既存のクラスにパッチを適用できます。それらに関する議論の一部に興味がある場合は、Charles Olivier Nutterの記事(彼は JRuby の主要な実装者です) またはYehuda Katz の記事を参照してください。

ソースによると、「使用済み」に関しては、あまり機能しません。

static VALUE
rb_obj_dummy(void)
{
    return Qnil;
}

いくつかの調査と「助けを求める」後、Charles Olivier Nutter (JRuby リード インプリメンター) の回答を次に示します。

#used は、リファインメントの「using」呼び出しでモジュールが表示されるときに呼び出されます

したがって、あなたの2つの質問は実際にリンクされています。

于 2013-03-10T18:43:36.273 に答える