Ruby
インスタンス

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

変数の種類

種類
命名規則
有効範囲
(スコープ)

ローカル変数
英小文字
または_
作られた場所(メソッドなど)でのみ
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基礎】インスタンス変数とは