[R] Standard method for S4 object

Thibaut Jombart jombart at biomserv.univ-lyon1.fr
Sun Feb 24 19:10:37 CET 2008


Martin Morgan wrote:

> Christophe Genolini wrote:
>
>>> Personnally I would find stuff like "names",  "$", "$<-", or "[" 
>>> useful as these are usual operation with S3 objects.
>>
>> Is it possible in S4 to define "$<-" ? If there is a slot name 'a' in 
>
>
> Possible yes, see below. Usual? It implies to the user that this is a 
> list- or data.frame-like object (where $ is used most commonly). Maybe 
> your object is not like that? It also seems like a short step from 
> direct slot access (although it doesn't have to be), which might be 
> breaking the abstraction layer that object orientation provides. And 
> it shifts the responsibility for confirming that 'name' is a slot, and 
> dispatching on different values of 'name' (e.g. for some slots perhaps 
> one doesn't want to allow access, and then the code inside the '$' 
> method has to check that), back to the developer (instead of allowing 
> the method definition and dispatch to do its work). Generally these 
> seem like backward steps to me.
>
Yes, to me too. But it is nonetheless useful when you convert an 'old' 
S3 class to S4 and want to re-use your old code as much as possible (or 
want users to be able to do so). I don't know if this is the case here. 
Plus, as $ and $<- are just wrappers for @ and @<-, the procedure 
checking the validity of a value assigned to a slot is still called when 
using $<-. Another, maybe interesting option is to use accessors to 
change the values of the slots. This might be more object-oriented, and 
would allow for more control on the content of the object.

Cheers,

Thibaut.

-- 
######################################
Thibaut JOMBART
CNRS UMR 5558 - Laboratoire de Biométrie et Biologie Evolutive
Universite Lyon 1
43 bd du 11 novembre 1918
69622 Villeurbanne Cedex
Tél. : 04.72.43.29.35
Fax : 04.72.43.13.88
jombart at biomserv.univ-lyon1.fr
http://lbbe.univ-lyon1.fr/-Jombart-Thibaut-.html?lang=en
http://pbil.univ-lyon1.fr/software/adegenet/



More information about the R-help mailing list