はじめに
Rubyのコードを見たとき、何これ(下のコードを参照)と思ったことがあったのでインスタンス変数の違いと普通変数の違いをまとめます。
.rb
@calculator = Calculator.new
目次
- はじめに
- 違い
- インスタンス変数とは
- 普通の変数とは
- おわりに
違い
3つの要素による違いがあります。
- スコープ
- 寿命
- 表記方法
それぞれ以下で解説します。
インスタンス変数とは
【スコープ】
- インスタンス変数は、クラスのインスタンス内で有効
- クラスのメソッド内やインスタンスメソッド内で宣言され、そのクラスのインスタンス内で共有される
【寿命】
- インスタンスが存在する限り生きてる!
- インスタンスが亡くなったら破棄される!
【表記法】
以下参照
.rb
@instance_variable = "This is an instance variable"
## 普通の変数とは
【スコープ】
- 通常の変数は、メソッド内で宣言されます!
- メソッド内でのみ有効です!
【寿命】
- 変数が宣言されたスコープでのみ使えます!
- ブロックやメソッド終了とともに滅びます!
【表記法】
以下参照
.rb
nomarl_variable = "This is an normal variable"
おわりに
2つの違いを総括します
- スコープ
- 寿命
- 表記方法
コードで表すと以下のような感じです!
.rb
class Example
def initialize
@instance_variable = "I am an instance variable"
local_variable = "I am a local variable"
end
def example_method
# @instance_variable はこのメソッド内でアクセス可能
puts @instance_variable
# local_variable はこのメソッド内でのみアクセス可能
# 他のメソッドやクラス外からはアクセスできない
puts local_variable # エラーが発生する可能性があります
end
end