[英]Accessing the environment a function is defined in, from outside the function
假设我在R
中有一个闭包,其外观类似于以下内容:
closure <- function(driver=system.file("java/driver.jar", package="fake"),
db_username=.getDb_username(),
db_password=.getDb_password(),
db_name=.getDb_name(),
tunnel="ssh command"){
system(tunnel)
drv <- JDBC("db.jdbc.Driver",
driver,
identifier.quote="`")
db_con <- dbConnect(drv, db_name, db_username, db_password)
runQuery <- function(sql_query, ...){
sql_query <- processQuery(sql_query, ...)
return(.dbRunQuery(db_con, sql_query, dbGetQuery))
}
return(runQuery)
}
然后我运行以下代码:
closure_return <- closure()
现在,我想从closure_return
访问db_con
。 这可能吗? 如果可以,怎么办?
请注意,我不想以任何方式更改closure
。 如果更改closure
是唯一的好方法,但是请尝试提供一个不涉及更改closure
的答案。
如果您需要任何说明,或者我使用的“ closure”一词不正确,请告诉我。
我太愚蠢。
在这里找到答案: http : //adv-r.had.co.nz/Functional-programming.html#closures
更多信息也可以在?environment
找到。
我可以简单地运行environment(closure_return)
并在那里访问var。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.