LoginSignup
2

More than 3 years have passed since last update.

(Ruby)インスタンス変数について(備忘録)

Last updated at Posted at 2019-05-21
1 / 2

変数の種類

種類 命名規則 有効範囲
(スコープ)
ローカル変数 英小文字
または_
作られた場所(メソッドなど)でのみ name
_name
インスタンス変数 @で始まる クラスのメソッド内で定義され、そのクラス内で参照可能 @name
クラス変数 @@で始まる クラスのメソッド外で定義され、継承されても参照可能 @@name
グローバル変数 $で始まる プログラムの
どこからでも
参照可能
$name

インスタンス変数とは、オブジェクトの情報を格納した変数のこと

例)

qiita.rb
class Fish
  def name=(name)
    @name = name
  end

  def name
    @name
  end
end

fish = Fish.new

fish.name = "さば"

puts fish.name

=>"さば"

解説

def name=(name)
  @name = name
end

:point_up_2:nameを@name(インスタンス変数)に格納している(セッター)

def name
  @name
end

:point_up_2:メソッドに定義して値を取り出せるようにしている(ゲッター)

fish = Fish.new

:point_up_2:クラスをオブジェクト化している

fish.name = "さば"

:point_up_2:セッターを呼び出して、"さば"と言う値を格納している

puts fish.name

:point_up_2:ゲッターを呼び出して、putsで出力する

セッターとゲッターの省略した形

・セッター

def name=(name)
  @name = name
end

||
\/

attr_writter :name

・ゲッター

def name
  @name
end

||
\/

attr_reader :name

:point_down:まとめた形

qiita.rb
class Fish
  attr_writter :name
  attr_reader :name
end

 fish = Fish.new

 fish.name = "さば"

 puts fish.name

=>"さば"

さらに省略した形

attr_writter :name
attr_reader :name

||
\/

attr_accesor :name

:point_down:まとめた形

qiita.rb
class Fish
  attr_accesor :name
end

 fish = Fish.new

 fish.name = "さば"

 puts fish.name

=>"さば"

まとめ

インスタンス変数は、セッターで格納し、ゲッターで値を取り出している

参考

【七海有里佳とRubyの基礎】Lesson15 いろいろある変数の種類
【Ruby基礎】インスタンス変数とは

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
2