変数の種類
種類 | 命名規則 | 有効範囲 (スコープ) |
例 |
---|---|---|---|
ローカル変数 | 英小文字 または_ |
作られた場所(メソッドなど)でのみ | 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 ```nameを@name(インスタンス変数)に格納している(セッター)
``` def name @name end ```メソッドに定義して値を取り出せるようにしている(ゲッター)
fish = Fish.new
クラスをオブジェクト化している
fish.name = "さば"
セッターを呼び出して、"さば"と言う値を格納している
puts fish.name
ゲッターを呼び出して、putsで出力する
セッターとゲッターの省略した形
・セッター
``` def name=(name) @name = name end ``` || \/attr_writter :name
・ゲッター
``` def name @name end ``` || \/attr_reader :name
まとめた形
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
まとめた形
qiita.rb
class Fish
attr_accesor :name
end
fish = Fish.new
fish.name = "さば"
puts fish.name
=>"さば"
まとめ
インスタンス変数は、セッターで格納し、ゲッターで値を取り出している
参考
[【七海有里佳とRubyの基礎】Lesson15 いろいろある変数の種類](https://www.youtube.com/watch?v=vumdVlnjtQI&t=651s) [【Ruby基礎】インスタンス変数とは](https://www.youtube.com/watch?v=5tXUSOkih-0)