【发布时间】:2016-08-19 12:38:42
【问题描述】:
考虑这个 R 包有两个函数,一个是导出的,另一个是内部的
你好.R
#' @export
hello <- function() {
internalFunctions:::hello_internal()
}
hello_internal.R
hello_internal <- function(x){
print("hello world")
}
命名空间
# Generated by roxygen2 (4.1.1): do not edit by hand
export(hello)
选中此选项后 (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’
问题
鉴于NOTE 表示几乎从不,在什么情况下将包需要为自己的对象使用:::?
额外
我有一个非常相似的related question,我确实需要::: 作为内部函数,但我不知道为什么需要它。希望对此有一个答案将解决那个问题。我怀疑解锁环境正在做一些我没有预料到的事情,因此不得不在内部函数上使用:::。
如果它们被认为是重复的,我将删除另一个。
【问题讨论】:
-
人们可能会考虑使用
:::来明确(对读者)该函数来自这个包(但它不是需要)