在某些情况下,返回 nanoarrow_array_stream 的 R 函数可能需要某些其他对象的范围超出数组流的范围。如果需要确定性地释放该对象(例如,关闭打开的文件),您可以注册一个函数,该函数将在从 R 线程调用流的释放回调后运行。请注意,如果从**非**R 线程调用流的释放回调,则**不会**运行此终结器。在这种情况下,终结器及其环境链将在运行 nanoarrow:::preserved_empty()
时被垃圾回收。
示例
stream <- array_stream_set_finalizer(
basic_array_stream(list(1:5)),
function() message("All done!")
)
stream$release()
#> All done!