Недавно коллега смотрел на графики звонков и хотел посмотреть, что называется чем. Мы отсортировали это с помощью foodweb из mvbutils, но мне было интересно, как лучше создать декоратор (на языке 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
было ли это сделано раньше, скажем в пакете, и я пропустил какие-то ошибки, которые нарушат мой способ сделать это?