考虑这个R包有两个函数,一个是导出的,另一个是内部的
hello.R
#' @export
hello <- function() {
internalFunctions:::hello_internal()
}
Run Code Online (Sandbox Code Playgroud)
hello_internal.R
hello_internal <- function(x){
print("hello world")
}
Run Code Online (Sandbox Code Playgroud)
NAMESPACE
# Generated by roxygen2 (4.1.1): do not edit by hand
export(hello)
Run Code Online (Sandbox Code Playgroud)
当检查(devtools::check()
)时,它返回NOTE
There are ::: calls to the package's namespace in its code. A package
almost never needs to use ::: for its own objects:
‘hello_internal’
Run Code Online (Sandbox Code Playgroud)
鉴于NOTE
说几乎没有,在什么情况下将一个包需要使用:::
其自己的对象?
额外
我有一个非常相似的相关问题,我确实需要:::
内部函数,但我不知道为什么需要它.希望有一个答案可以解决这个问题.我怀疑解锁环境正在做一些我不期望的事情,因此不得不使用:::
内部功能.
如果他们被认为是彼此的重复,我将删除另一个.
在一般情况下你永远不应该这样做.如果以不寻常的方式调用父函数,则可能需要它(例如,您已手动更改其环境,或者您从另一个未附加包的进程调用它).