shimgo
5/8/2016 - 4:42 AM

evalメソッドは実行中のコンテキストを共有するが、変数の宣言はできない

evalメソッドは実行中のコンテキストを共有するが、変数の宣言はできない

# 先に定義されている変数ならば実行コンテキストは共有なのでaは変更される
a = 10
eval "a = 1"
p a #=> 1

# 定義されていない変数をevalで定義しても実行コンテキストにbは存在しない
eval "b = 10"
p b #=> NameError