从函数

时间:2015-05-14 23:47:22

标签: r

我们假设我在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()

现在,我想从db_con访问closure_return。这可能吗?如果是这样的话?

请注意,我不想以任何方式更改closure。如果更改closure是唯一可行的方法,但请尝试提供不涉及更改closure的答案。

如果您需要任何澄清或者我使用&#34;关闭&#34;这个词,请告诉我。不正确。

1 个答案:

答案 0 :(得分:1)

我很傻。

在此处找到答案:http://adv-r.had.co.nz/Functional-programming.html#closures

还可以在?environment找到更多信息。

我只需运行environment(closure_return)并访问那里的变种。