當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Julia finalizer用法及代碼示例


用法:

finalizer(f, x)

注冊一個函數 f(x) 以在沒有 program-accessible 引用 x 時調用,並返回 xx 的類型必須是 mutable struct ,否則此函數的行為是不可預測的。

f 不得導致任務切換,這不包括大多數 I/O 操作,例如 println 。使用 @async 宏(將上下文切換延遲到終結器之外)或 ccall 直接調用 C 中的 IO 函數可能有助於調試目的。

例子

finalizer(my_mutable_struct) do x
    @async println("Finalizing $x.")
end

finalizer(my_mutable_struct) do x
    ccall(:jl_safe_printf, Cvoid, (Cstring, Cstring), "Finalizing %s.", repr(x))
end

終結器可以在對象構造時注冊。在下麵的示例中,請注意我們隱式依賴終結器返回新創建的可變結構 x

示例

mutable struct MyMutableStruct
    bar
    function MyMutableStruct(bar)
        x = new(bar)
        f(t) = @async println("Finalizing $t.")
        finalizer(f, x)
    end
end

相關用法


注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Base.finalizer — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。