跳至内容

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

用法

array_stream_set_finalizer(array_stream, finalizer)

参数

array_stream

一个 nanoarrow_array_stream

finalizer

一个将以零个参数调用的函数。

返回值

一个新分配的 array_stream,其释放回调将调用提供的终结器。

示例

stream <- array_stream_set_finalizer(
  basic_array_stream(list(1:5)),
  function() message("All done!")
)
stream$release()
#> All done!