在某些情況下,返回 nanoarrow_array_stream 的 R 函數可能需要某些其他物件的 scope 比陣列串流的 scope 更長壽。如果需要確定性地釋放該物件(例如,關閉開啟的檔案),您可以註冊一個函數,使其在從 R 執行緒調用串流的釋放回調後運行。請注意,如果從非 R 執行緒調用串流的釋放回調,則此終結器將不會運行。在這種情況下,當運行 nanoarrow:::preserved_empty()
時,終結器及其環境鏈將被垃圾回收。
範例
stream <- array_stream_set_finalizer(
basic_array_stream(list(1:5)),
function() message("All done!")
)
stream$release()
#> All done!