クラス
クラス
- クラス名は大文字から始まらなければならない(定数)
- メンバ変数は"@"
- クラス変数は"@@"
- メンバ変数は外からアクセス不可
- クラスの中に式を書くと定義時に実行される
- コンストラクタで処理したい場合は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
インスタンス変数って言うのか。奥が深い。
公式のドキュメント読みづらいのでこういうページはすごく助かる。