LoginSignup
1
0

More than 3 years have passed since last update.

Ruby インスタンス変数を外部から操作する パート2

Posted at

昨日の記事Ruby インスタンス変数を外部から操作するの続きです

attr_accessorメソッド

単純にインスタンス変数の内容を外部から読み書きする場合は、
arrt_accessorメソッドを使う

class User
  #@nameを読み書きするメソッドが自動的に定義される
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  #nameメソッドや、name=メソッドを明示的に定義する必要がない
end

user = User.new('太郎')
#@nameを変更する
user.name = 次郎
user.name #=> "次郎"

複数指定することも可能

class User
  #@nameを読み書きするメソッドが自動的に定義される
  attr_accessor :name, :age

  def initialize(name)
    @name = name
    @age = age
  end

  #nameメソッドや、name=メソッドを明示的に定義する必要がない
end

user = User.new('太郎', 20)
user.name #=> '太郎'
user.age #=> 20

attr_renderメソッド

インスタンス変数の内容を読み取り専用にしたい場合は、
arrt_renderメソッドを使う

class User
  #読み取り用のメソッドだけを自動的に定義する
  attr_render :name

  def initialize(name)
    @name = name
  end
end

user = User.new('太郎')
#@nameを参照する
user.name #=> "太郎"

user.name = '次郎'
#=> NoMethodError

attr_writerメソッド

インスタンス変数の内容を書き込み専用にしたい場合は、
arrt_writerメソッドを使う

class User
  #書き込み用のメソッドだけを自動的に定義する
  attr_writer :name

  def initialize(name)
    @name = name
  end
end

user = User.new('太郎')
#@nameは変更できる
user.name = "次郎"

#@nameの参照はできない
user.name
#=> NoMethodError

参考記事、書籍

チェリー本

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