rubykansaiくんのつぶやき(Rubyの変数の巻)
Ruby には変数の宣言みたいなもんはないから、いきなり値を代入できるで。こんな感じや。i = 0 #rubykansai
2011-08-17 19:11:11i = 0 いうのんは、値が 0 の Fixnum オブジェクトに i っちゅう名前を付けたわけやな。 #rubykansai
2011-08-17 19:11:42i っちゅう名前のオブジェクトに 1 足した新しいオブジェクトができて、それに i っちゅう名前を付けたんや。わかるか? #rubykansai
2011-08-17 19:16:19これも一緒や。値が "Ruby関西" いう String オブジェクトに i っちゅう名前を付けただけや。 #rubykansai
2011-08-17 19:20:59Rubyの変数には型がないから、同じ変数に Fixnum オブジェクトでも String オブジェクトでも代入できるねん。 #rubykansai
2011-08-17 19:22:09j = i したら、同じオブジェクトに j っちゅう名前も付けたことになるんや。[i, j] # => ["Ruby関西", "Ruby関西"] #rubykansai
2011-08-17 19:27:08コピーしたんとちゃうで。i も j も同じオブジェクトの名前なんや。[i.object_id, j.object_id] # => [2151892700, 2151892700] #rubykansai
2011-08-17 19:28:50オブジェクトをいぢってみたら分かるで。i.upcase!; [i, j] # => ["RUBY関西", "RUBY関西"] #rubykansai
2011-08-17 19:31:42upcase に ! が付いてたん覚えてるか。破壊的メソッド言うてレシーバのオブジェクトが変化してもうたんや。ビックリしたなあ。 #rubykansai
2011-08-17 19:34:09こんどは非破壊メソッドの方で小文字にしてみよか。j = i.downcase # => "ruby関西" #rubykansai
2011-08-17 19:38:39i の方は大文字のままやで。[i, j] # => ["RUBY関西", "ruby関西"] #rubykansai
2011-08-17 19:40:40