Минимальный сценарий
Предположим, пакет должен контролировать его использование. Например, сколько раз была вызвана указанная c функция пакета с момента загрузки пакета.
Каков наилучший способ добиться этого?
Первый idea
Я пытался создать переменную внутри функции .onLoad()
:
## R/zzz.R
.onLoad <- function(libname, pkgname) {
how_many_times <- 0
}
Но эта переменная недоступна после загрузки пакета ...
Вторая идея
Переменная внутри некоторого файла .R
. И использование оператора присваивания области видимости <<-
:
## R/somefile.R
#' @exports
how_many_times <- 0
#' @exports
count_me <- function() {
how_many_times <<- how_many_times + 1
how_many_times
}
Но это тоже не работает! Первый определенный глобальный how_many_times
не изменяется, когда я вызываю функцию count_me
, но это другая переменная как замыкание внутри функции, которая модифицируется.