変数の種類
種類 | 命名規則 | 有効範囲 (スコープ) |
例 |
---|---|---|---|
ローカル変数 | 英小文字 または_ |
作られた場所(メソッドなど)でのみ | 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
=>"さば"
まとめ
インスタンス変数は、セッターで格納し、ゲッターで値を取り出している
参考