1.変数とはなにか
何かのオブジェクトを指し示すことができる存在です。
name = "Jojo"
変数を通じてオブジェクトを参照できるようにすることを 代入する と言います
変数には ローカル変数 と インスタンス変数 などの種類があります。
2.インスタンス変数とはなにか
インスタンス変数は、インスタンス(オブジェクト)が持つ変数です。同じオブジェクトであれば、複数のメソッドをまたいで使うことができます。インスタンス変数は、変数名の先頭に@をつけて使います。
class User
def name=(name)
@name = name #インスタンス変数@nameに”Jojo”を代入-----③
end
def name
@name
end
end
user = User.new #Userクラスのオブジェクトを作る-----①
user.name = "Jojo" #nameメソッドを呼び出す-----②
=> "Jojo"
ここでは、①「name」という名前を設定するメソッドを定義しました。②でname
=メソッドを呼び出し、引数として"Jojo"を渡しています。③で引数で渡された"Jojo"をインスタンス変数@nameに渡しています。
複数のオブジェクトにそれぞれ違う名前を設定してみます。
> user1 = User.new
> user.name = "Dio"
=> "Doi"
> user2 = User.new
> user.name = "Kira"
=> "Kira"
無事、オブジェクトごとに別々の名前を入れて扱うことができるようになりました。
3.ローカル変数とインスタンス変数の違い
種類 | 特徴 |
---|---|
ローカル変数 | その場限りの一時的な変数。定義したメソッドの中でしか使えない。 |
インスタンス変数 | オブジェクトの保持する変数。同じオブジェクトであればどのメソッド内からでも利用できる。 |
4.まとめ
- ローカル変数は、定義したメソッドの中でしか使えない
- 名前が@で始まる変数はインスタンス変数
- インスタンス変数は同じオブジェクトであればメソッドをまたいで使うことができる
- インスタンス変数は代入が実行された時に生まれる。
参考文献
[ゼロからわかるRuby超入門]