16
一位同事最近正在查看调用图并希望看到什么叫做什么。我们整理与来自mvbutils食物网,但我在想R.如何更好地创建一个装饰(在python说吧)所以我这样做:为R功能编写装饰器
instrument=function(z){
force(z)
n=deparse(substitute(z)) # get the name
f=function(...){
cat("calling ", n,"\n")
x=z(...)
cat("done\n")
return(x)
}
return(f)
}
这让我做的事:
> foo=function(x,y){x+y}
> foo(1,2)
[1] 3
,现在我可以做的函数日志本身通过包装它:
> foo=instrument(foo)
> foo(1,2)
calling foo
done
[1] 3
有这样做过,在一个包说,并有我错过了将打破我这样做的方式任何陷阱?
公平的问题,错误的观众。 IMNSHO你显然需要在`r-devel`上提问。 – 2011-01-28 15:11:00