同じ引数を指定した proc 呼び出しで毎回同じ結果が得られるかどうかを確認したいと思います。pureproc
引数付きの呼び出しは無料なので、 を呼び出すたびにpureproc(1,1)
同じ結果が得られます。dirtyproc
引数付きで呼び出された はその環境内にバインドされているため、 と同じアリティを持っていてもpureproc
、その出力は環境に依存します。
ruby-1.9.2-p136 :001 > envx = 1 => 1 ruby-1.9.2-p136 :003 > pureproc = Proc.new{ |a,b| a+b} => # ruby-1.9.2-p136 :004 > dirtyproc = Proc.new{ |a,b| a+b+envx }
呼び出された proc またはメソッドが解放されているかどうかをプログラムで判断するにはどうすればよいですか? バインディング、ローカル変数などの説明も歓迎します。