Rubyでクロージャ

こうやればいいのか。

def gen
  x = 0;
  return lambda {
    puts x
    x += 1
  }
end

y1 = gen 
y1.call #=> 0
y1.call #=> 1

y2 = gen
y2.call #=> 0

y1.call #=> 2