[R] Method dispatch for function call operator?
Taras Zakharko
taras.zakharko at gmail.com
Thu Jan 13 09:09:24 CET 2011
Dear R gurus,
I am trying to create a nicer API interface for some R modules I have
written. Here, I heavily rely on S3 method dispatch mechanics and
makeActiveBinding() function
I have discovered that I apparently can't dispatch on function call
operator (). While .Primitive("(") exists, which leads me to believe that
things like x(...) are internally translated to .Primitive("(")(x, ...), I
can't seem to do something like:
x <- integer()
class(x) <- "testclass"
"(.testclass" <- function(o, x, y) print(paste(x, y))
x(1, 2)
Similar code does work for other operators like "[".
A workaround I have discovered is to make x a function from the beginning
and then extend the functionality by via S3 methods. Unfortunately, it does
not allow me to do something I'd really like to - use syntax like this:
x(...) <- y
For this, I'd need to dispatch on something like
"(<-.testclass" <- function(x, arglist, value)
Currently, I am using the index operator for this (i.e. x[...] <- y) - it
works nicely, but I'd prefer the () syntax, if possible.
Does anyone know a way to do this?
--
View this message in context: http://r.789695.n4.nabble.com/Method-dispatch-for-function-call-operator-tp3215381p3215381.html
Sent from the R help mailing list archive at Nabble.com.
More information about the R-help
mailing list