ぷろぐらみんぐ学習帳

プログラミング初心者の学習記録です。2020年12月に勉強開始。

変数の整理(Ruby)

変数が入り混じったときよく混乱します。

よく私が悩むポイントは

・どの範囲まで有効か(スコープ)

・どうやって見分けるか

 

なので、上記を意識して整理しました。

 

グローバル変数

プロジェクト内どこでも有効。

先頭に$をつける。

あまり使われない

 

 ●インスタンス変数

宣言されたクラス内ならどのメソッドでも有効。

インスタンスごとに値は異なる。

先頭に@をつける

 

●ローカル変数

宣言されたメソッド内やブロック内でのみ有効。

定義のとき先頭に何もつける必要はない

 

→「普段何気なくみているただの(?)変数はローカル変数」ということを改めて認識!ちなみに有効範囲(スコープ)でについては有効範囲の外で同じ名前の変数がでてきても、別の変数として認識される」という説明がいちばんしっくりきました。

 

 

例その①

name = "Tanaka"

def sample

   puts name ←ローカル変数nameの有効範囲内。同じ変数nameとして認識。

end 

sample

→ Tanaka と表示

 

 

例その②

def sample

   puts name 

end

name = "Tanaka" ← ローカル変数nameの有効範囲外異なる変数として認識

sample

→ エラー

 

ローカル変数の例をだしましたが、私は今Ruby on Railsの勉強中で、インスタンス変数(@~)もよくでてきます。インスタンス変数は同じクラス内なら異なるメソッドでも同じ変数として認識されることを考えると、index,new, editなどのアクション(同じアクションのコントローラーとビューで同じ変数を扱う)でインスタンス変数が使われている理由がわかりました。

 

以上です。書いてみると当たり前のこと書いてしまったかも。。。でも勉強になったのでこれからもアウトプット少しずつ頑張ります😁