[Ruby]Rubyのメタプログラミングってなんだ?
本日から、メタプログラミングRuby 第2版を読み始めている。
早速、メタプログラムってなに?状態からわからない。。。
本書の最初には、
「メタプログラミングとは、コードを記述するコードを記述することである」と書かれている。
コードを記述するコードってなに?
さっぱりわからない。
言い方を変えると、
「言語要素を実行時に操作するコードを記述することである。」とのことです。
まだわからない。。
データベース操作で使うActive Recordで考えると分かりやすいみたい。
ActiveRecordでは、ActiveRecord::Baseを継承するモデルクラスを定義するだけで、実行時にデータベースのスキーマを読み取り、定義したモデルクラス名に合わせてカラムを見つけてそれぞれのアトリビュートのアクセサメソッドを自動的に定義してくれる。
要は、
「クラスのアトリビュートごとにアクセサメソッドを書くのではなく、ActiveRecord::Baseを継承するだけで、実行時にアクセサメソッドが定義されるようなコードを書かれている。これが『コードを記述するコードを記述する』ということである。」
とのことです。
お〜なんとなくわかったような分かってないような。。。
まだ航海は始まったばかり。
頑張るぞ!!!
補足
アトリビュートとは、他言語でいうpropertyのことをRubyではattributeと呼ぶ。