私はジュリアのマニュアルを参照してくださいジュリアJuliaでモジュールファイナライズメソッドを書く正しい方法は何ですか?
にファイナライザを使用するための正しい方法を見つけるためにしようとしています:
ファイナライザ(X、機能)
は、関数fを登録(X)へのxへのプログラムアクセス可能な参照がないときに呼び出されます。 xがビット型の場合、この関数の動作は予測できません。
まず私はその後、私はパッケージをテストしようとしたが、一方で、私はERRORを受けTestModule.jl
#in TestModule.jl
module TestModule
end
finalizer(TestModule,(t)->println("fin"))
ともruntest.jl
#in runtest.jl
using Base.Test
using TestModule
でTestModule標準パッケージをgenetatedテストをパスした:
julia> Pkg.test("TestModule")
INFO: Testing TestModule
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
jl_uv_writecb() ERROR: bad file descriptor EBADF
INFO: TestModule tests passed
は、その後私はTestModule
このようなfinalize
方法を追加するテスト・プロセス中にエラーが発生なぜいくつかの質問
- を有する上記テストケースによれば、別のテストケース
julia> workspace() # new workspace julia> typeof(TestModule) # make sure *there are no program-accessible references to `TestModule`* ERROR: UndefVarError: TestModule not defined julia> using TestModule julia> finalize(TestModule) fin # finalize method is working julia> typeof(TestModule) Module # make sure *there is program-accessible reference to `TestModule`* julia> workspace() # force clear references julia> typeof(TestModule) # check that *there are no program-accessible references* ERROR: UndefVarError: TestModule not defined
を配置しましたか? I明確な言及
モジュール
(OS = Ubuntuの、ジュリア・バージョン= 0.4.0)
finalize
方法を追加するための正しい方法は何ですかながら
finalize
メソッドが呼び出されなかったのはなぜ
EDIT
は役に立たない、またworkspace()
後gc()
を呼び出し、言及しています。
おかげ