Когда пакет должен использовать: для своих собственных объектов

Рассмотрим этот пакет R с двумя функциями, один экспортированный и другой внутренний

hello.R

#' @export
hello <- function() {
  internalFunctions:::hello_internal()
}

hello_internal.R

hello_internal <- function(x){
    print("hello world")
}

NAMESPACE

# Generated by roxygen2 (4.1.1): do not edit by hand

export(hello)

Когда это отмечено (devtools::check()), он возвращает NOTE

There are ::: calls to the package namespace in its code. A package
  almost never needs to use ::: for its own objects:
  ‘hello_internal’

Вопрос

Учитывая, что NOTE говорит почти никогда, при каких обстоятельствах будет, пакет должен использовать ::: для своих собственных объектов?


Extra

У меня очень похожий вопрос где мне требуется ::: для внутренней функции, но я не знаю почему требуется. Надеюсь, что ответ на этот вопрос поможет решить эту проблему. У меня есть подозрение, что разблокировка среды делает то, чего я не ожидаю, и, следовательно, нужно использовать ::: для внутренней функции.

Если они считаются дубликатами друг друга, я удалю другой.

Ответ 1

Вам никогда не понадобится это в обычных обстоятельствах. Это может потребоваться вам, если вы вызываете родительскую функцию необычным способом (например, вы вручную изменили ее среду или вы вызываете ее из другого процесса, в котором пакет не подключен).