1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
def foo
x = 1
eval("y=2")
eval("z = 3; 1.times { puts x,y,z }")
eval("puts x,y,z")
end
def bar
a = 0
eval <<-A
x = 1
eval <<-B
y = 2
puts a,x,y
B
$b = binding
# puts y # error: at the time the eval was compiled 'y' wasn't known to be a local
A
eval <<-A
puts a, x, y
A
end
def baz
eval <<-A, $b
puts a, x, y
A
end
def g
1.times {
x = 1
eval("y = 1") # y goes to dynamic dictionary on the block's local scope
}
#puts x #error
eval("puts y") rescue p $! # error
end
foo
puts '-' * 20
bar
puts '-' * 20
baz
puts '-' * 20
g
|