LoginSignup
1
0

More than 1 year has passed since last update.

[Ruby]attr_accessorの使い方を簡単に解説してみました(照

Last updated at Posted at 2021-05-20

アクセッサーメソッドとは

Rubyではデフォルトだとインスタンス変数にアクセスできないように設定されています。
下記がその例です。

class Foo
  @foo = ''
end

foo = Foo.new
foo.foo = 'foo'
puts foo.foo #=> NoMethodError

ではインスタンスからインスタンス変数にアクセスするには、アクセッサーメソッドを定義する必要がある。
アクセッサーメソッドには2種類あります。

attr_reader

インスタンス変数にアクセスするためのゲッター(読み取り)としての役割を持つ。

class Foo
  attr_reader :foo
  def initialize(word)
    @foo = word
  end
end

foo = Foo.new('foo')
puts foo.foo #=> "foo"

attr_writer

インスタンス変数にアクセスするためのセッター(書き込み)としての役割を持つ。

class Foo
  attr_reader :foo
  attr_writer :foo

  def initialize(word)
    @foo = word
  end
end

foo = Foo.new('foo')
puts foo.foo #=> "foo"

foo.foo = 'bar'
puts foo.foo #=> "bar"

アクセッサーメソッドを定義するメソッド

attr_accessor

ゲッターとセッターの両方の性質を併せ持つメソッド。

class Foo
  attr_accessor :foo

  def initialize(word)
    @foo = word
  end
end

foo = Foo.new('foo')
puts foo.foo #=> "foo"

foo.foo = 'bar'
puts foo.foo #=> "bar"

まとめ

デフォルトでは、インスタンスからインスタンス変数へのアクセスが出来ないRubyではアクセッサーメソッドを利用する、といったことが分かれば良いかと思います!

1
0
1

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
1
0