旧gaaamiiのブログ

間違ったことを書いている時があります。コメントやTwitter、ブコメなどでご指摘ください

【Ruby】セッターとゲッターを自前で書かなくてもアクセサーメソッドで属性にアクセスできる

隣のテーブルの女子大生の会話(イケメンの見定め方について)を聞きながら作りながら学ぶRuby入門 第2版を進めています。

クラスを作って、インスタンスを作る。
そんで、
インスタンス.年齢
みたいな感じでインスタンスの持ってる属性(今回だとnameとage)にアクセスしてそれを変更したり、表示したりしたい。
セッター(変更するためのメソッド)やゲッター(読み込むためのメソッド)を自前で書く方法もあるけど、Rubyではattr_accessorというメソッドが用意されているので、それを使えば簡単にできるらしい。

class Tantei
        def initialize(name,age)
                @name = name
                @age = age
        end
        attr_accessor :name, :age
end

shin = Tantei.new('工藤新一',17)

# 表示
puts "氏名:#{shin.name}, 年齢:#{shin.age}"

# 氏名、年齢の変更
shin.name = '江戸川コナン'
shin.age = 7
puts "氏名と年齢を変更しました。"

# 再度表示
puts "氏名:#{shin.name}, 年齢:#{shin.age}"

(実行結果)
氏名:工藤新一, 年齢:17
氏名と年齢を変更しました。
氏名:江戸川コナン, 年齢:7

江戸川コナンって改めてすごい名前だな。