Ruby on Rails

Rubyのメタプログラミング

define_method, method_missing, class_eval, instance_eval, hooks, DSLs

20 面接問題·
Senior
1

Rubyにおけるメタプログラミングとは何ですか?

回答

メタプログラミングとは、プログラムが実行時にコードを書いたり変更したりできる能力のことです。Rubyでは、これによりメソッド、クラス、モジュールを動的に定義でき、コードをより柔軟かつ簡潔にします。この手法はRailsのようなフレームワークで広く使われ、エレガントなDSLを作成しコードの重複を減らすために活用されています。

2

Ruby における define_method メソッドの目的は何ですか?

回答

define_method を使うと、実行時に動的にメソッドを作成できます。メソッド名(シンボルまたは文字列)と、メソッド本体を定義するブロックを受け取ります。def とは異なり、define_method は closure を通じて外側のスコープのローカル変数をキャプチャするため、パラメータ化された振る舞いを持つメソッドを生成するのに便利です。

3

method_missing メソッドは Ruby によっていつ呼び出されますか?

回答

method_missing は、オブジェクトがその継承チェーンに存在しないメソッド呼び出しを受け取ったときに自動的に呼び出されます。呼び出されたメソッドの名前とその引数を受け取り、これらの呼び出しを動的に処理できます。これは ActiveRecord で使われる ghost methods のような、多くのメタプログラミングパターンの基盤となっています。

4

class_eval と instance_eval の主な違いは何ですか?

5

module がクラスに include されたとき、どの hook が呼び出されますか?

+17 面接問題

次の面接に向けてRuby on Railsをマスター

すべての問題、flashcards、技術テスト、コードレビュー演習、面接シミュレーターにアクセス。

無料で始める