Hi, Just wanted to say that embedding a slot in your class that's an environment (as I shown earlier) will still solve your problem w/o you having to switch to Ref classes (since you've already done lots of work for your app in S4).
Let's assume you have a slot `cache` that is an environment, using your latests examples, let's say it's like this: setClass("Element", representation=representation(x='numeric', cache='environment'), prototype=prototype(x=numeric(), cache=new.env())) Let's say "gradient" is something you want to be access by reference, you can have something like this (setGenerics left out for lack of time): setMethod("gradient", "Element", function(x, ...) { if (!'gradient' %in% ls(x@cache)) { x@cache$gradient <- calc.gradient.from.element(x) } x@cache$gradient }) Then a call to `gradient(my.obj)` will return the gradient if it already calculated, or it will calc it on the fly and set it into your object (w/o copying your object) and return it when it's done. > which is my issue. Without the reference-based approach an object > in a slot which is then included in another object slot is a copy. > An update to the original object slot then requires 'extra' code > to update/synchronize the copy. Again, this "semi-s4-semi-ref-class" approach would run around this issue .. but life might get confusing to you (or your users) depending on what one expects as "normal" behavioR. Just wanted to try to clear up my original intention (if it wasn't clear before). -steve -- Steve Lianoglou Graduate Student: Computational Systems Biology | Memorial Sloan-Kettering Cancer Center | Weill Medical College of Cornell University Contact Info: http://cbio.mskcc.org/~lianos/contact ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.