繁体   English   中英

R-在父环境中评估return()

[英]R - evaluating return() in parent environment

我需要一个“内部”函数来返回它,就像它是父函数一样。

例:

some_fn <- function() {
  inside_fn <- function() {
    eval.parent(return("I wish"))
  }
  inside_fn()
  return("I wish not")
}

some_fn()
## [1] "I wish not"

stop()on.exit()可...

some_fn_2 <- function() {
  on.exit(return("Well, this works"))
  inside_fn <- function() {
    eval.parent(return("I wish"))
    stop()
  }
  inside_fn()
  return("I wish not")
}

some_fn_2()
[1] "Well, this works"

...但是有点骇人听闻,我想知道是否有更干净的方法可以做到这一点。 我知道这并不完全简单; 这意味着将忽略调用堆栈的一部分,但是,亲爱的社区,我还是想知道您的想法。 :)

callCC可以突破嵌套调用:

callCC(function(k) {
  inside_fn <- function() {
    k("I wish")
  }
  inside_fn()
  return("I wish not")
})
## [1] "I wish"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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