R在函数内定义一个函数属性

时间:2017-09-16 15:36:12

标签: r function attr

是否可以在函数内定义一个函数属性?
它可以在外面定义,但在函数内部是否有自引用的符号?

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

1 个答案:

答案 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")