Rubyの学習ノート--変数

[Ruby]

変数の種別(宣言無しで、名前で決まる)

  • ローカル変数
    • 小文字または"_"で始まる
    • 使う前に必ず代入する必要がある
    • まだ代入が行われていない小文字で始まる識別子はメソッド扱い!
    • スコープ:
      • メソッド定義(defからendまで) 
      • クラス定義(classからendまで)
      • モジュール定義(moduleからendまで)
      • ブロック(メソッド呼び出しの直後のdoからend、あるいは{ ... }の中)、この場合だけ!外側のローカル変数にアクセスできる!
    • ★ローカル変数のオキテ

「メソッドの先頭でローカル変数の初期化を行う」ことと「ブロック内で初出のローカル変数はブロックから出ると無効になる」

つ・か・う・な (まつもとゆきひろ様より)

  • 定数
    • 大文字で始まる
    • 代入による定義が必要
    • メソッド定義の中では定数に代入できない
    • サブクラスや内側クラスで再び同じ名前の定数を定義すると、内側の定義による値が最優先!
    • スコープ
      • トップレベル(クラス・モジュール定義の外側)で定義された定数はプログラム全体
      • クラス・モジュール定義の中で定義された定数はそのクラス定義の範囲内と継承やインクルードによって定数定義を引き継いでいるクラス・モジュール内

[PHP]

変数の種別(宣言なくでもokだが、宣言すると紳士的)

  • ローカル変数(普通に関数のスコープ内に「$hoge = "hoge"」で書く)
  • グローバル変数
    • 関数以外のところに「$hoge = "hoge"」で書くと、関数以外のところにアクセスできる。
    • または関数/クラス内に修正子 globalで「global $hoge」で宣言すると、アクセスできる。
    • $GLOBALS の配列に入れる 「$GLOBALS["hoge"] = "hoge"」とか
  • インスタンス変数
    • クラス内に修正子 static public static $my_static = 'foo';」で宣言し、ClassName::my_staticでアクセス
  • 定数
    • define('HOGE', 'hoge');で定数名を大文字にして宣言する。