Dear Development Group,

In trying to answer the subject question myself, I found this thread
initiated by Tony from five years ago:
http://tolstoy.newcastle.edu.au/R/help/05/12/18169.html. I recently stumbled
upon the following S4 answer to Tony's question:

setClass("fooWfcn",
    representation(dat1="vector",
        dat2="vector",
        fn1="function",
        fn2="function"),
    prototype=prototype(dat1=0:10, dat2=10:20)
    )

setMethod("initialize", "fooWfcn", function(.Object, ...) {
    .Object <- callNextMethod()
    .Object@fn1 <- function(x) { return(x - mean(.Object@dat1)) }
    .Object@fn2 <- function(x) { mean(.Object@dat2) }
    .Object
    })

foo <- new("fooWfcn")
foo@fn1(0)  # -5
foo@fn2()   # 15
foo2 <- new("fooWfcn", dat1 = 11:20)
foo2@fn1(0) # -15.5

(If this is well-known, I apologize, but I could not find it anywhere.)

Before going too far down the road under the assumption that this S4
self-referencing-via-initialize mechanism will always work (so far so good,
in broad contexts) I would be grateful for some confirmation from the
development team that this "happy accident" will not suddenly disappear. :-(

Thank you,

Dan Murphy

        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to