サイト更新情報
[Categories]
agile | angularjs | barbecue | birthday | body scoop | car | chuork01 | dinner | domin life | drive | event | fes | fishing | friend | gunpla | javascript | life | lunch | photo | ps3 | rails | ruby event | sake | software-development | sports snowboard | study event | sushi | sweets | techmix-hokkaido | torne | travel | vegetable garden | vim | weight training | whiskey | work

Ogagaga Diary


2011年05月24日 [長年日記]

メタプログラミングRubyの写経

最近は日記力の高まりとともに写経力も上がっているようです。

本日からはメタプログラミングRubyの写経をやっていこうと思います。
この本は一度読んでいるのですが、とても素晴らしい内容なので自分の理解を深める ために写経をすることにしたのです。

日記には自分の理解度が足りない所や勝手にメモしておきたいことを残していこうと思います。

ちなみに僕はRuby→Railsではなくて、Rails→Rubyの人なのであまりRubyのパワーを使えて ないのが実情だと思います。

第1章 オブジェクトモデルより

  • クラスメソッドとインスタンスメソッド MyClass.my_method(), obj.my_method
  • 継承チェーンを取得する方法 ancestors
  • カレントオブジェクトは self
  • クラスはClassクラスのオブジェクト。クラス名は定数
  • Class.superclass # => Module, Module.superclass # => Object

第2章 メソッド

  • メソッドを動的に呼び出す obj.send(:mymethod, 3)
  • シンボルと文字列
    • シンボルはイミュータブル→文字列は変更できるがシンボルはできない
    • シンボルは「物」の名前に使う。Object#send()
  • パターンディスパッチ
  • send()はプライベートメソッドを呼び出せる
  • メソッドを動的に定義する Module#define_method()
  • method_missing()→具体例を用いて詳しい説明がある
    • 動的プロキシ

第3章 ブロック

明日!

[]