drieux wrote:
> On Dec 19, 2003, at 1:16 PM, christopher j bottaro wrote:
>
> > i'm reading "Programming Perl" and i'm on the chapter about packages. it
> says
> > that packages and modules are very similar and that novices can think of
> > packages, modules, and classes as the same thing, but i wanna know
exactly
> > what the differences between packages and modules are (i'm a c++
> programmer,
> > i know what classes are).
> ...
> # Our Stock Constructor
> sub new
> {
> my $type = shift;
> my $class = ref($type) || $type;
> my $self = {};
> bless $self, $class;
>
> } # end of our simple new
Hi drieux,
I have to question the constructor model above. I was using it, in a pretty
much apish imitation of the model from the docs, for modules until the
thread starting with:
Subject: What is the best way to set options in a constructor
Date: Thu, 16 Oct 2003 15:35:22 -0400
From: Dan Anderson <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
In which Randal set me straight on the actual implications of the
construct. I had assumed that it was related to inheritance and was needed
to identify a new class as a subclass of its parents. Randal set me
straight on this in the post:
Subject: Re: What is the best way to set options in a constructor
Date: 23 Oct 2003 07:14:47 -0700
From: [EMAIL PROTECTED] (Randal L. Schwartz)
To: "R. Joseph Newton" <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED], Dan Anderson <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
[Randal]
...
The point is that
$instance->new
could mean either "clone", or "make one of the same class as". You
don't need it for "make one of the same class as", because you've got:
(ref $instance)->new
to do that explicitly. And if you really wanted that to do clone,
CALL IT CLONE, don't call it ->new.
It obscures more than it clarifies, and hence is a *bad* name
for an instance method.
...
[/Randal]
It might be worth a trip to the archives to review this thread.
Joseph
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>