Hi all,

I'm trying to do some object-oriented programming in R using the R.oo
package.

Right from the start I encountered a strange (at least for me) problem. I
define a new class/constructor based on the R.oo documentation.

However the first attempt to create an object fails:

=== Code: ===

library(R.oo);

setConstructorS3("MyClass",function(param) {
    print(param);
    extend(Object(),"MyClass", .param=param);
})

print("Attempt1");
obj = MyClass(1);

=== Output: ===

Loading required package: R.methodsS3
R.methodsS3 v1.0.3 (2008-07-02) successfully loaded. See ?R.methodsS3 for
help.
R.oo v1.4.6 (2008-08-11) successfully loaded. See ?R.oo for help.
[1] "Attempt1"
[1] 1
Error in print(param) : argument "param" is missing, with no default

===


Yet a second attempt, within the same session, calling the same constructor
with the same parameters works!

=== Code: ===

print ("Attempt2");
obj = MyClass(1);
print(obj);

=== Output: ===

[1] "Attempt2"
[1] 1
[1] "MyClass: 0x140154948"

====

What I am doing wrong? Seems that the constructor definition does not come
fully into effect before I call if for the first time (apparently too late)

thanks in advance, V.

=== sessionInfo ===

R version 2.6.2 (2008-02-08)
i486-pc-linux-gnu

locale:
LC_CTYPE=en_IE.UTF-8;LC_NUMERIC=C;LC_TIME=en_IE.UTF-8;LC_COLLATE=en_IE.UTF-8;LC_MONETARY=en_IE.UTF-8;LC_MESSAGES=en_IE.UTF-8;LC_PAPER=en_IE.UTF-8;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_IE.UTF-8;LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] R.oo_1.4.6        R.methodsS3_1.0.3

loaded via a namespace (and not attached):
[1] rcompgen_0.1-17 tcltk_2.6.2     tools_2.6.2

        [[alternative HTML version deleted]]

______________________________________________
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.

Reply via email to