我用return
R中的嵌套函数进行了测试,但没有成功。我来自Mathematica,该代码在这里很好用。这是一个玩具代码:
fstop <- function(x){
if(x>0) return(return("Positive Number"))
}
f <- function(x){
fstop(x)
"Negative or Zero Number"
}
如果我评估f(1)
,我得到:
[1] "Negative or Zero Number"
当我期望的只是:
[1] "Positive Number"
问题是:我可以在中进行一些非标准评估fstop
,因此我可以得到公正的fstop
结果,而无需更改f
功能?
PS:我知道我可以将if
直接放进去f
,但是在我的实际情况下,结构并不是那么简单,这种结构会使我的代码更简单。
要伸出我的脖子说...
使函数不返回其调用方而是返回其调用方将涉及更改其执行上下文。这就是return
在源中实现类似事物以及其他控制流事物的方式。看:
https://github.com/wch/r-source/blob/trunk/src/main/context.c
现在,我认为R级代码无法访问这样的执行上下文。也许您可以编写一些可以做到这一点的C级代码,但是不清楚。你总是可以写do_return_return
在样式功能do_return
在eval.c
和构建R的定制版本...它不值得。
因此,答案很可能是“否”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句