Я использую фабрику функций, определенную кем-то другим, и не могу ее изменить. Обычно в начале каждого запуска нужно создавать несколько функций с этой фабрикой. В моем примере с игрушкой мне кажется, что мне часто нужно много таких power_
функций. В настоящее время, как пользователь otherpackage
, я должен включить строки типа power2 <- power_factory(2)
в свои скрипты.
otherpackage::power_factory <- function(exp) {
function(x) {
x ^ exp
}
}
power2 <- power_factory(2)
power3 <- power_factory(3)
Я бы хотел избежать этих строк, написав свой собственный пакет, поэтому вместо этого я могу использовать mypackage::power2()
в своих скриптах. Обычно, если бы я хотел обернуть эти функции в пакет, я мог бы просто использовать фабрику для сборки их внутри пакета. Однако эта фабрика зависит от некоторого внешнего ввода, здесь credential
, которое я не могу записать в свой пакет. Это делает заводскую ошибку, если я помещаю power2 <- power_factory(2)
внутри пакета:
# credential <- "my_secret"
otherpackage::power_factory <- function(exp) {
print(credential)
function(x) {
x ^ exp
}
}
power2 <- power_factory(2)
#> Error in print(credential): object 'credential' not found
Создано в 2019-03-07 пакетом Представление (v0.2.1)
Есть ли способ обойти эту проблему? Конечная цель, как указано выше, состоит в том, чтобы иметь возможность вызывать mypackage::power2()
вместо необходимости делать power2 <- power_factory(2)
и множество вариантов таких в начале каждого сценария.