Ref classes: can I register fields as I register methods?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Ref classes: can I register fields as I register methods?

Janko Thyson
Hi there,

 

is it possible to register fields as you can register methods with
getRefClass("Classname")$methods(.)?

 

I know that you should usually give some thought on which fields you need
and hardcode them in the class def. But I'm playing around with dynamically
creating/extending sort of a template class that already offers basic
functionality shared by all objects that "inherit" from that class. If I
follow the usual inheritance paradigm I would have to actually define those
new "subclasses" and let them inherit from the superclass (contains
argument(, right? But can I get around that by sort of registering new
fields? Maybe with 'initFields(.)'?

 

Thanks for any info on that,

Janko

 

##### SYSTEM INFO #####

Windows XP SP3

R 2.12.0

Eclipse 3.6.1 (Helios)

StatET 0.9.1

#####################

 

 


        [[alternative HTML version deleted]]

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: Ref classes: can I register fields as I register methods?

John Chambers-2
Well, it's an interesting idea, and the current implementation would fit
with it.

One catch is that it goes against any obvious notion of checking for
valid objects (admittedly, there are some difficulties in that already
with active bindings being used).

Another issue is that in normal R programming practice, your "template"
class would be in a package, in a namespace, and therefore locked.
Conceptually at least, one would not be allowed to modify that definition.

Both these issues would be solved by using subclasses for the
extensions, which seems more in the spirit of R.  Seems like you could
hide the subclass details from your users if you wanted to.

So, something to think about, but the use case isn't convincing yet.

John

On 11/21/10 2:18 PM, Janko Thyson wrote:

> Hi there,
>
>
>
> is it possible to register fields as you can register methods with
> getRefClass("Classname")$methods(.)?
>
>
>
> I know that you should usually give some thought on which fields you need
> and hardcode them in the class def. But I'm playing around with dynamically
> creating/extending sort of a template class that already offers basic
> functionality shared by all objects that "inherit" from that class. If I
> follow the usual inheritance paradigm I would have to actually define those
> new "subclasses" and let them inherit from the superclass (contains
> argument(, right? But can I get around that by sort of registering new
> fields? Maybe with 'initFields(.)'?
>
>
>
> Thanks for any info on that,
>
> Janko
>
>
>
> ##### SYSTEM INFO #####
>
> Windows XP SP3
>
> R 2.12.0
>
> Eclipse 3.6.1 (Helios)
>
> StatET 0.9.1
>
> #####################
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel
Reply | Threaded
Open this post in threaded view
|

Re: Ref classes: can I register fields as I register methods?

Vitalie S.-2
John Chambers <[hidden email]> writes:

> Well, it's an interesting idea, and the current implementation would fit with
> it.
>
> One catch is that it goes against any obvious notion of checking for valid
> objects (admittedly, there are some difficulties in that already with active
> bindings being used).
>
> Another issue is that in normal R programming practice, your "template" class
> would be in a package, in a namespace, and therefore locked. Conceptually at
> least, one would not be allowed to modify that definition.
>
> Both these issues would be solved by using subclasses for the extensions,
> which seems more in the spirit of R.  Seems like you could hide the subclass
> details from your users if you wanted to.
>
> So, something to think about, but the use case isn't convincing yet.

Just an user opinion here.

Personally I would like to have separate interfaces for _installation_ and
_accessing_ the methods/fields. Something along the following lines.

instFields() and instMethods() would do the installation.

fields() and methods() would get or set the objects with the check for already
installed objects. For example:

fields("a","b") will return a list of fields "a" and "b", if those are installed;
error otherwise.

fields(a= 32,b= 999) will set the values of "a" and "b", if exists/ error
otherwise.

I have already implemented the above in the code required for my work, and
found it quite convenient.

Vitalie.

>
> John
>
> On 11/21/10 2:18 PM, Janko Thyson wrote:
>> Hi there,
>>
>>
>>
>> is it possible to register fields as you can register methods with
>> getRefClass("Classname")$methods(.)?
>>
>>
>>
>> I know that you should usually give some thought on which fields you need
>> and hardcode them in the class def. But I'm playing around with dynamically
>> creating/extending sort of a template class that already offers basic
>> functionality shared by all objects that "inherit" from that class. If I
>> follow the usual inheritance paradigm I would have to actually define those
>> new "subclasses" and let them inherit from the superclass (contains
>> argument(, right? But can I get around that by sort of registering new
>> fields? Maybe with 'initFields(.)'?
>>
>>
>>
>> Thanks for any info on that,
>>
>> Janko
>>
>>
>>
>> ##### SYSTEM INFO #####
>>
>> Windows XP SP3
>>
>> R 2.12.0
>>
>> Eclipse 3.6.1 (Helios)
>>
>> StatET 0.9.1
>>
>> #####################
>>
>>
>>
>>
>>
>>
>> [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> [hidden email] mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel>

______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel