は猿ぎ/クラス~リニューアルオープンさんの一例を反映?
-
23-08-2019 - |
質問
今回は再帰的の性質がいかに決定されるかという問題に 選択回答 についての質問なっ章理解の反射を生み出します。
思を反映したものを中心に照会の内部の出来事のプログラムです。の例ではこれらの対応のパッチをRubyの組み込みの整数クラスです。
- ねこのような機能過負荷/相続ではなく実行時の変更?
- でクラス再開さんの一例を反映?
解決
リフレクションは、遅延バインディングを実装するために使用することができます。
レイトバインディングは、猿のパッチを実装するために使用することができます。
猿のパッチがその答えに示したコーディングスタイルの並べ替えを達成するために使用することができます。
しかし、サルのパッチ、または反射を必要としない、そのような機能を実装する他の方法があります。ヘック、事前コンパイラ良いマクロを使用すると、近くに得ることができます。
だから、技術的に正確ではなく、(私見)最大の例
他のヒント
再帰のレベルを上昇させるリスクがある、私はあなたがそのリンクで私の答えを参照しているが、対応したいと思います。
誤解があるため内側に探しに言及としての反射の私たちの直感的な理解を作るための簡単なものです。そしてそれはまた、プログラミングで確かに反射の重要な側面だ - Rubyで、例えば、私たちは、オブジェクトが実行時に自分自身についての質問をすることを可能にするinstance_ofのようなメソッドを持っています。
しかし、反射するのウィキペディアの定義を見て取ります:
あなたが見ることができるように反射は、Aプロセスであります コンピュータプログラムは、を観察することができ、 の独自の構造を変更し、 行動ます。
、反射がちょうどランタイム自己点検以上のものです。また、実行時の動作を変更する機能です。クラスを再オープンすることも、「モンキーパッチング」と呼ばれています。あなたはここにのそれ詳細を読むことができます。
モンキーパッチはへの道であります を拡張または修正するランタイムコードのの 変更せずに動的言語 元のソースコード。
このプロセスとも呼ばれます。 - ゲリラパッチ適用 - 以前に宣言されたクラスを拡張します - クラスを再オープン - ダイナミック・ファンク - ハイジャック - ダックパンチング - メソッドスウィズリング