Rubyの変数まとめ
[履歴] (2013/07/15 09:48:20)
最近の投稿
注目の記事

概要

Rubyの変数にはすべて何らかのオブジェクトへの参照が格納されます。
オブジェクトそのものが格納されることはありません。

sample.rb

str1 = "This is a string."
str2 = str1
p str1.equal? str2 # 参照先は同じ

str2[-1] = '?' # だから出力内容も同じ
p str1
p str2


var1 = 128
var2 = var1
p var2.equal? var1 # この時点では参照先が同じ

var2 *= 2          # こうすると
p var2.equal? var1 # var2には新しいオブジェクトが代入されたようだ
p var1
p var2

出力例

$ ruby sample.rb 
true
"This is a string?"
"This is a string?"
true
false
128
256

関数への引数で注意

C/C++などで関数に配列 (ポインタ相当) を渡すときに内部で書き換えるかどうか意識するように、
Rubyでは参照渡ししかないため (特に文字列の場合に) 注意が必要です。

sample.rb

def add_postfix (str)
  str << " ...???"
end

str = "This is a string."
add_postfix(str)
p str

出力例

$ ruby sample.rb 
"This is a string. ...???"

様々な変数

C/C++などでは、グローバル変数やローカル変数、定数を宣言位置やconst修飾子などで区別しています。
Rubyではそうではなく、変数名で区別しています。

ローカル変数

varなど小文字またはアンダーバーから開始

グローバル変数

$stdout,$varなど$から開始

メンバ変数 (インスタンス変数)

@varなど@から開始

staticメンバ変数 (クラス変数)

@@varなど@@から開始

定数

MAXNなど大文字から開始
関連ページ