On Jun 27, 2011, at 3:17 AM, Renaud Gaujoux wrote:

> 
> On 24/06/2011 22:04, John Chambers wrote:
>> 
>> Strictly speaking, that is not meaningful.  A class (like any R object) is 
>> uniquely referenced by a name *and an environment*.  The name of a package 
>> can be used to construct the environment, but your "character slot" won't 
>> identify a class reliably unless the character string has a "package" 
>> attribute.
>> 
>> Look at class(x), for example, from an object from one of these classes.  It 
>> will have a "package" attribute identifying the package.
>> The character string with the package attribute is what you should be 
>> storing in the slot (or else store the class definition---takes more space 
>> but is slightly more efficient).
>> 
> 
> Thank you for this clarification, I will make my factory method for the 
> relevant class add the package attribute to the slot.
> Storing the class would require recreating the object if the user makes 
> changes in the class definition. These objects are meant to be used when 
> developing new algorithms. In this context one expects the user to do 
> multiple tries and modifications, and I want to ease the process, by using 
> dynamic links to classes (a character slot) rather than static links (result 
> of getClass).
> 
> However, this does not explain why .onLoad does not find the class while 
> .onAttach finds it, does it?
> Is .onLoad evaluated outside the namespace environment, while .onAttach is 
> evaluated within the namespace?
> 

Look at the default of where - it is the top environment, not the evaluated 
one, and in .onLoad the namespace is not attached yet while it is in .onAttach.

Cheers,
S

Possibly @John: it's a bit puzzling that isClass has a default for where yet it 
is entirely ignored as getClassDef is called without where. If anyone changes 
the default in getDeffClass() then isClass signature will be misleading - is 
there a practical reason for this construct? Thanks, S.
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to