是否可以在函数内定义一个函数属性?
它可以在外面定义,但在函数内部是否有自引用的符号?
f2 = function(x) {
x/2
attr(thisObject(),'type')='half' #something like thisObject()
}
在功能之外很容易做到这一点:
attr(f2,'type')='half'
在某种情况下,我需要知道传递了什么类型的函数:
fCalc=function(f=f2,x){
if(attr(f,'type')=='half') {
cat('ok\n')
return(f(x))
} else cat( 'not ok')
}
fCalc(f2,4)
ok
[1] 2
答案 0 :(得分:2)
如果要在R中编写Java程序,可以定义函数工厂:
fact <- function(args, expr, attrib)
{
f <- function() { }
formals(f) <- args
body(f) <- substitute(expr)
attr(f, "type") <- attrib
f
}
fact(alist(x=), x/2, "foo")