Рассмотрим следующее file.r
:
foo = function(){}
bar = function(){}
useful = function() {foo(); bar()}
foo
и bar
предназначены только для внутреннего использования useful
- они вообще не пригодны для повторного использования, поскольку требуют очень специфического размещения данных, имеют встроенные константы, делают что-то непонятное, что никому не нужно и т.д.
Я не хочу определять их внутри useful{}
, потому что тогда он станет слишком длинным (> 10 LOC).
Клиент может сделать следующее, чтобы импортировать только useful
в свое пространство имен, и все же я не уверен, будет ли это работать с foo
и bar
вне видимости:
# Source a single function from a source file.
# Example use
# max.a.posteriori <- source1( "file.r","useful" )
source1 <- function( path, fun )
{
source( path, local=TRUE )
get( fun )
}
Как я могу правильно сделать это на стороне file.r
, т.е. экспортировать только определенные функции?
Кроме того, существует проблема упорядочения функций, которая, по моему мнению, связана с вышеизложенным. Позвольте нам иметь
douglas = function() { adams() }
adams = function() { douglas() }
Как мне обрабатывать циклические зависимости?