LoginSignup
0
2

More than 5 years have passed since last update.

Rubyのアクセスメソッドについて

Last updated at Posted at 2016-07-09

アクセスメソッドを使う理由は?

コードの量を減らすため

アクセスメソッドについて

Rubyのインスタンス変数に続いてRubyのアクセスメソッドについてまとめます。

インスタンスメソッドに値を保存するには
クラスに毎回set,getメソッドを作らないといけないので面倒です。

そのためRubyでは定義されたアクセスメソッドを利用してset,getメソッドの作成を省略できます。

アクセスメソッドは以下の表通りです。

定義式 機能 effect
attr_reader :v 参照が可能 def v; @v; end
attr_writer :v 更新が可能 def v=(value); @v=value; end
attr_accessor :v 参照・更新が可能 attr_reader :v; attr_writer :v

set,getメソッドはセットみたいなもんで僕はほとんどattr_accessorしか使ってない感じです。

また複数のインスタンスメソッドを外から使うには

attr_accessor :carname, :location, :age

のように書けます。

コード

次のコードはアクセスメソッドを利用してオブジェクト毎に値を保存して表示するコードの例です。

class Car
attr_accessor :carname
end

mom_car  = Car.new
father_car = Car.new

mom_car.carname = 'morning'
father_car.carname = 'lamborghini'

puts mom_car.carname
puts father_car.carname

実行結果

morning
lamborghini

attr_accessorをコメントアウトするとアクセスできないよって言われます。

class Car
# attr_accessor :carname
end

mom_car  = Car.new
father_car = Car.new

mom_car.carname = 'morning'
father_car.carname = 'lamborghini'

puts mom_car.carname
puts father_car.carname

実行結果

access_method.rb:8:in `<main>': undefined method `carname=' for #<Car:0x000000011c68e8> (NoMethodError)

参考
http://www.rubylife.jp/ini/class/index6.html

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2