プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

Rubyでの変数のスコープ確認

Rubyでの変数とスコープをざっとまとめました。

# トップレベルの変数をメソッド
foo = 'foo in toplevel'

def display_foo
  puts foo #=> NameError トップレベルのローカル変数は参照できない
end

puts foo #=> foo in toplevelと表示される
# display_foo #=> NameError

greeting = 'Hello ,'
people = %w(Alice Bob)

people.each do |person|
  puts greeting + person
  # ブロック内ではトップレベルのgreetingは参照できる
end

# puts person #=> NameError ブロック内変数は参照できない

# 定数は大文字で表記します
FOO = 'foo'

# ただし定数は代入可能(エラーは出ますが)
FOO = 'bar'
puts FOO

# メソッド内で定数の定義はできません
def set_foo
  FOO = 'foooooo' #=> dynamic constant assignment
end

これにグローバル変数($をつける)が加わる感じです。 グローバル変数はどこからでも参照・変更可能なので多用は無用。