カテゴリー:
Ruby
タグ:
 attr_accessor クラスインスタンス変数

このエントリーをはてなブックマークに追加
更新日時:
2013年08月15日(木)
作成日時:
2013年08月15日(木)

前の記事 / 次の記事

参考:クラスインスタンス変数にアクセサを利用しアクセスする

今までそこまで考えが及ばなかったけど、確かに、
クラスインスタンス変数っていうのはClassクラスのインスタンス変数で、
Classクラスのインスタンスの特異クラスに住んでいるのがクラスインスタンス変数だから、
その特異クラスでアクセサを定義すればクラスインスタンス変数にアクセスできるようになる。

このページには「利用頻度が低い!」って書いてあるけど個人的には利用頻度激高なので助かる。

クラスインスタンス変数のアクセサを自力で定義すると

class Book
  def self.pages_per_book
    @pages_per_book
  end

  def self.pages_per_book=(value)
    @pages_per_book = value
  end
end

のようになるけど、特異メソッドとして定義すればアクセサを使って定義することもができる。

class Book
  class << self
    attr_accessor :pages_per_book
  end
end