読者です 読者をやめる 読者になる 読者になる

Ruby でトップレベルで定義したローカル変数は他のファイルからは参照されない

Ruby

てっきりトップレベルで定義した変数はグローバル変数扱いで他のファイルからでも参照できるのかと思ったんですが、そういうことはないんですねー。

[a.rb]

def a_func
    :a_func
end

@a = 42

a = 10

[b.rb]

require_relative "./a"

# メソッドやインスタンス変数であれば参照することができる
p a_func
# => :a_func

p @a

# べつのファイルのローカル変数は
p a
# => Error: `<main>': undefined local variable or method `a' for main:Object (NameError)

こんな感じでトップレベルで定義した変数はそのファイルのローカル変数みたいな扱いになります。