2011-03-14 23 views
-1

"終了"で何が実行され、終了時にオブジェクトファイナライザを実行できないのですか?「終了」で何が実行され、終了時にオブジェクトファイナライザを実行できないのですか? Ruby

注:exitを使用しますか。

at_exit { run_this } 

とも任意のオブジェクトのファイナライザ:

+1

「注」に「not」という単語がありません。もしあなたがいるなら、あなたは 'exit! 'を使いたいのですか? –

+1

exitハンドラを実行せずにオペレーティングシステムに "success"を返したい場合、 "exit!(true)"を実行するだけで、デフォルトのfalseステータス "exit!"が上書きされます。 – Brandon

+0

オブジェクトファイナライザを実行しない場合の目標は何ですか? –

答えて

0

「出口は」と規定されているコードブロックを実行します。

オブジェクトファイナライザの定義を解除するには、ObjectSpaceをタップして "undefine_finalizer"を使用しますが、そうしないことをおすすめします。アクセスとオブジェクト・スペースを経由してオブジェクトを破壊することは奇妙な行動を引き起こす可能性があります(あなたが明示的に「+ O」フラグでそれを伝えない限り、また、JRubyのは、オブジェクト・スペースを利用しない)ObjectFinalizerを未定義

は、次のようになります。もう一度

ObjectSpace.undefine_finalizer(obj) 

、このようなRubyの内部構造を掘り下げることは、アプリケーションで奇妙な動作を引き起こす可能性があります。このようなものを本番アプリケーションにリリースする前に、あなたが何をしているのかを確認してください。

http://www.ruby-doc.org/core/classes/ObjectSpace.html

関連する問題