It's still too bad the language doesn't build something in.The problem is that the "right thing" to do is very different depending on the object. Sometimes you want no copy (for a singleton object, for example). Sometimes you want a shallow copy. Sometimes you want a deep copy. Only the author of a class can really know that.
For example, suppose you had an object that had a link to the database from which it came. When you "copied" that object, you surely wouldn't want an entire clone of the database!
Smalltalk solves this by having a "copy" method that "does the normal thing" for each class, which defaults to a deep copy, and a "shallowCopy" and "deepCopy" method that defaults to "copy". If a need to have something other than a deepcopy arises for the default (like the link to a database example), then the class author changes copy to be shallowCopy or some shallowCopy plus a copy of some of the deeper memebers. It works rather nicely, but does require some thinking for each class.
-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.
In reply to •Re: Re: •Re: Copying Objects
by merlyn
in thread Copying Objects
by lapointd
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |