Rubyリファレンス: Home

attr (Module)

Edit   History

標準クラス・モジュール > Module > attr

private

attr(name, writable = false)

attrメソッドは、クラスやモジュールにインスタンス変数の読み取り用のアクセサメソッドを定義します。第1引数nameには、インスタンス変数名をシンボルか文字列で指定します。戻り値はnilです。

次の例では、Bookクラスにメソッドtitleを定義しています。

class Book
  attr :title
  
  def initialize(title)
    @title = title
  end
end
 
book = Book.new("Programming Ruby")
puts book.title
Programming Ruby

上記の例は、次のように記述するのと同じことです。

class Book
  def title
    @title
  end
  (後略)

第2引数writabletrueにすると、書き込み用のメソッドも定義します。

class Book
  attr :title, true
  
  def initialize(title)
    @title = title
  end
end
 
book = Book.new("Programming Ruby")
book.title = "Programming Ruby 2nd Edition"
puts book.title
Programming Ruby 2nd Edition

上記の例は、次のように記述するのと同じことです。

class Book
  def title
    @title
  end
  def title=(val)
    @title = val
  end
  (後略)
attr(name, ...)

Ruby 1.9 Ruby 1.9では、attrメソッドはattr_readerと同じ機能のメソッドになりました。複数のインスタンス変数名を指定できます。-wオプションを付けて起動したときは、第2引数にtrueを渡すと警告が出ます。

class Book
  attr :title, :price
  
  def initialize(title, price)
    @title = title; @price = price
  end
end
 
book = Book.new("Programming Ruby", 1980)
puts book.price
1980

関連項目