クラス

クラス

  • クラス名は大文字から始まらなければならない(定数)
  • メンバ変数は"@"
  • クラス変数は"@@"
  • メンバ変数は外からアクセス不可
  • クラスの中に式を書くと定義時に実行される
  • コンストラクタで処理したい場合はdef initializeメソッドで処理する


これはちょっと難しいな。
メンバ変数に初期値を入れるのをクラススコープでやるとインスタンス生成時はnilになってるっぽい感じ。
クラススコープで"@"使ってもクラス変数にはならないみたいだしよく分からん。

class Choge
  @a = 10
  puts "@a=#{@a}"
  def p
    puts "@a=#{@a}"
  end
end
Choge.new.p
@a=10   #最初に評価される
@a=     #なぜかnil


とりあえずinitializeメソッドで初期値を入れるなりなんなりすれば大丈夫。

class Choge
  @a = 10
  puts "@a=#{@a}"
  def initialize
    @a = 20
  end
  def p
    puts "@a=#{@a}"
  end
end
Choge.new.p
@a=10   #最初に評価される
@a=20   #インスタンス生成時にセットされる     


http://www.okisoft.co.jp/esc/ruby/tut-03.html
インスタンス変数って言うのか。奥が深い。
公式のドキュメント読みづらいのでこういうページはすごく助かる。