閉包

ゼミでクロージャについて説明したのだが、上手く伝えられることができただろうか。例として、

def hoge x
    return lambda {x = x + 1}
end

inc.call
=> 1
inc.call
=> 2
x = 10
=> 10
inc.call
=> 3

のようなRubyコードを挙げたら、「なぜhogeのxが保存されるの?」と聞かれたのだが上手く答えることができなかった・・・。「クロージャは環境を保持するもので、この場合はxと値の対応が環境として保持されているから」とかいう感じで答えたのだが、まわりはあまり納得してなかったような気がする。もう少しちゃんとした知識と説明能力を身に付けないといけないな。