Hello!

Since my last question about
closure(http://groups.google.com/group/comp.lang.ruby/browse_frm/thread/0d7e258107e1683e/12e182a6ff493232?hl=en#12e182a6ff493232)
I am testing my understanding making some examples.

Here's some code:

def f name
	x = 0

	case name
		when "one"
			lambda {x += 1; puts x}
		when "two"
			lambda {puts x}
	end
end

one = f "one"
two = f "two"

one.call
two.call
one.call
two.call

Result:

1
0
2
0


I expected the following.
1
1
2
2


I thought that x is shared between one and two but they don't seem to.
Or am I missing something?

Thanks.

Sam