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