Ruby

2014-08-18, ruby

定数のスコープ

Rubyには変数名を大文字で始めると定数として扱われるという面白いルールがあります。単純に値が書き換え不可になるだけではなく、そのスコープもグローバルになるようです。つまり以下のコードはエラーになります。

def foo
  A = 3 # error!
end

以下のコードはOKです。

def foo
  puts A
end

A = 10
foo #=> 10

普通の変数(ローカル変数)と比較すると違いが分かり易いかと思います。以下のコードはbar関数を呼び出したところでエラーになります。

def bar
  puts b
end

b = 20
bar # error!

参考URL

この記事は役に立ちましたか?