メタプログラミングRuby(月曜日)

面白かったところ、知らなかったことなどのメモ
Ruby東海でメタプログラミングRubyの読書会が始まるのでその予習

Rubyのクラス宣言

3.times do
  class C
    puts "Hellow"
  end
end

これがclass Cを3回宣言したということじゃないということ
つまりRubyにおけるclassキーワードはクラスの宣言ではなく
単なるスコープ演算子のようなものだということ

オブジェクトとクラスのまとめ

  • オブジェクトのインスタンス変数はオブジェクトに存在する
  • オブジェクトのメソッドはクラスに存在する
  • 実はクラスはClassクラスのオブジェクト
  • 1.9からはObjectクラスの上位にBasicObjectってのがある
  • ClassクラスはModuleクラスのサブクラス
  • クラスは単にnew,allocate,superclassを追加したモジュール

クラスはClassクラスのオブジェクトってのが頭になじみにくい

メソッド呼び出し

  • privateメソッドとは「明示的なレシーバをつけてプライベートメソッドを呼び出すことはできない」というルールに従って実装されている
  • 3つ目のprintはKernel