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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
$j = 0
T = true
F = false
x = nil
Foo = [T,x,F,F,F]
Bar = [x,F,F,F,F]
def foo
r = Foo[$j]
puts "#{$j}: foo #{$j} -> #{r.inspect}"
$j += 1
r
end
def bar
r = Bar[$j]
puts "#{$j}: bar #{$j} -> #{r.inspect}"
$j += 1
r
end
def test1
$j = 0
puts foo..bar ? 'true' : 'false'
puts foo..bar ? 'true' : 'false'
puts foo..bar ? 'true' : 'false'
puts foo..bar ? 'true' : 'false'
end
def y; yield; end
def test2
$j = 0
$p = lambda {
puts foo..bar ? 'true' : 'false'
}
y &$p
y &$p
y &$p
y &$p
end
def t(b)
eval("
puts x
puts foo..bar ? 'true' : 'false'
", b)
end
def test3
$j = 0
x = 1
b = binding
t b
x += 1
t b
x += 1
t b
x += 1
t b
end
puts '--- test1 ---'
test1
puts '--- test2 ---'
test2
puts '--- test3 ---'
test3
|