Ruby:◇変数:いよいよですねぇ ・・・ 【Ruby:9歩目】
◇変数:いよいよですねぇ
変数。この「魔法」の仕組みがすべてのプログラムやシステムを
魅力的で確実なものにして来ていますが、
いよいよ Rubyでも これをきちんと理解・・・
まず 種類。
Ruby では
・変数名をみれば種類を区別することができる
変数名の先頭に着目しよう ということで・・・
value = 2008 # 先頭が小文字 > ローカル変数
Value = 2008 # 先頭が大文字 > 定数
(※前に学んだ リテラルとはまた 違うのだな
このあたりがまだグレーだ)
$value = 2008 # 先頭が$ > グローバル変数
(※そうなんだ! $ がついていれば
グローバル変数か。わかりやすいなぁ)
その他
@value ・・・ インスタンス変数(?)
@@value ・・・ クラス変数(?)
ということだ
※phpの場合(他の多くのプログラムでも同じだが)
グローバル変数は
$GLOBALS[変数名] で参照ができたのだが・・・
$がついていれば グローバル変数、というのは
混乱しやすいが、慣れれば便利そうだな
第9.1歩
◇変数:ローカル変数
アルファベット小文字 またがアンダースコアで始まる変数だ
(例)
a = 2008
x = 25
など。
[スコープ]
ローカル変数だから当然スコープ(有効範囲)は限定
・メソッド定義の 外側と内側では共有することはできない
def foo # fooメソッド定義(このあたりはまた後述)
p a # これで「こんにちは」は表示されない
end
def foo # fooメソッド定義(このあたりはまた後述)
p a # これで「こんにちは」は表示されない
end
p a # ここでは「こんにちは」と表示
※ちなみに これら
Windowsのコマンドプロンプトで確認したが
前に学習したように
ruby *******.rb では文字化け起こりやすく
ruby -Ks *******.rb と
文字コードが Shift-JIS であることを指定した方がいい
・ここで復習
文字コードの指定は
-Ks # Shift-JIS
-Ku # UTF-8
-Ke # EUC-JP
-Kn # NONE
だ
[未定義のローカル変数]
未定義のローカル変数は参照できない
未定義のローカル変数にアクセスすると
NameError が発生する
undefined local variable or method `a' for main:Object (NameError)
第9.2歩
◇変数:グローバル変数
名前が $で始まる変数だ
(例)
$a = 2008
$x = 25
など。
[スコープ]
プログラムのどこからでも参照できる
・前述 ローカル変数のケースでは
def foo # fooメソッド定義(このあたりはまた後述)
p $a # これで「こんにちは」が表示
end
※グローバル変数は便利だが危険?
利用し過ぎると、どこで変数が参照され書き換えられたが
判別しづらくなる。必要最小限に抑えるべき
もっともですな。
[未定義のグローバル変数]
未定義のローカル変数は参照できない
未定義のローカル変数にアクセスすると
nil が返ってくる
まずはここまで・・・






