I didn't see an answer to this and I THINK I sorted it out myself so I
thought I'd post it for anyone who is interested (in using it or correcting
it):
My original question:
Can someone show me how to modify one (R.oo) class's object inside another
(R.oo) class's method? Is that possible with the R.oo package? A quick
example or reference to an example would be outstanding...
Solution:
setConstructorS3("Person", function(age) {
if (missing(age)) age <- NA;
extend(Object(), "Person",
.age=age
)
})
setMethodS3("getAge", "Person", function(this, ...) {
this$.age;
})
setMethodS3("setAge", "Person", function(this, newAge, ...)
{
if (!is.numeric(newAge))
throw("Age must be numeric: ", newAge);
if (newAge < 0)
throw("Trying to set a negative age: ", newAge);
this$.age <- newAge;
})
setConstructorS3("AgeMultiplier", function() {
extend(Object(), "AgeMultiplier",
.age=NA,
.age_multiplied=NA
)
})
setMethodS3("doMultiply", "AgeMultiplier",
function(this,per_obj, ...) {
this$.age_multiplied = per_obj$age * 2;
per_obj$age = this$.age_multiplied;
})
Use example:
p1 <- Person(67)
am1 = AgeMultiplier()
am1$doMultiply(p1)
p1$age # 134
On Tue, Aug 23, 2011 at 8:22 AM, Ben qant <ccquant@gmail.com> wrote:
> Can someone show me how to modify one (R.oo) class's object inside
another
> (R.oo) class's method? Is that possible with the R.oo package? A quick
> example or reference to an example would be outstanding...
>
> Thanks,
>
> Ben
>
[[alternative HTML version deleted]]