繁体   English   中英

从函数外部访问定义了函数的环境

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM