0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ローカル変数とインスタンス変数の違い

Posted at

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超入門]

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?