R пакет devlopment: как использовать переменную для сохранения состояния? - PullRequest
2 голосов
/ 22 апреля 2020

Минимальный сценарий

Предположим, пакет должен контролировать его использование. Например, сколько раз была вызвана указанная 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, но это другая переменная как замыкание внутри функции, которая модифицируется.

1 Ответ

0 голосов
/ 23 апреля 2020

Мой вопрос является своего рода дубликатом. Я удовлетворен этим ответом: { ссылка }

...