如何从
const data.table
函数返回R
?
来自data.table
软件包的data.table
通过引用传递给和从函数返回。
因此,返回data.table
的函数允许调用函数修改返回的data.table
。
所以问题是:如何从data.table
函数返回const R
?
有几个明显的解决方案对我们不起作用:
返回copy()
时调用data.table
。
constByCopy <- function() {
dt <- ... # dt is a data.table not created in the current environment
...
return(copy(dt))
}
这有效;但是,我们的data.table
足够大,导致此解决方案不可行。
使用lockBinding()
和unlockBinding()
。但是,这不适用于data.table
,因为仍然可以修改锁定的data.table
。 (这类似于C ++中int * const
和int const * const
之间的差异。)