假设我们在一个R
包中有这个函数。
prova <- function() {
print(attr(prova, 'myattr'))
print(myattr(prova))
invisible(TRUE)
}
'myattr<-' <- function(x, value) {
attr(x, 'myattr') <- value
x
}
myattr <- function(x) attr(x, 'myattr')
所以,我安装了这个包,然后我测试了它。这是结果:
prova()
# NULL
# NULL
myattr(prova) <- 'ciao' # setting 'ciao' for 'myattr' attribute
prova()
# NULL
# NULL # Why NULL here ?
myattr(prova)
# [1] "ciao"
attr(prova, 'myattr')
# [1] "ciao"
问题是:如何从自身内部获取函数的属性?
如示例所示,在函数本身内部,我无法获取其属性。
我想解决方案将是“语言计算”系列(match.call()[[1L]]
, substitute
, 环境和朋友)。我错了吗?
我认为这里重要的一点是这个函数在一个包中(所以,它有它的环境和命名空间),我需要它的属性在自身内部,在包中,而不是在外部。