假设我有一些功能,f
:
f <- function() {
print(sys.calls())
}
假设我有两个附加功能,
g <- function() {
f()
}
h <- function() {
f()
}
调用这些函数会导致:
> g()
[[1]]
g()
[[2]]
f()
> h()
[[1]]
h()
[[2]]
f()
假设
- 没有任何函数被进一步修改或覆盖,
- 唯一被称为
f
的地方是g
或h
里面.
在调用堆栈中,f()
总是紧跟在g()
之后出现,这样我就可以在f()
内部判断sys.call(-1)[[1]]
,以确定f
是被g
调用还是被h
调用,我能有多可靠/稳定/自信?
换句话说,我是否缺少一些使用模式,用户会在堆栈中插入另一个调用,介于对g
或h
的调用和对f
的调用之间?