On Tue, Aug 29, 2000 at 10:00:13PM -0700, Nathan Wiger wrote:
> Matt Youell wrote:
> > 
> > > mainstream OO languages go).  It looks like Dog could be a type of String
> > > subclass.
> > 
> > That was my first thought as well. Besides, I'd rather type:
> > 
> >     my Dog $spot("Spot");
> > 
> > Which says everything that needs to be said without any repetition, and it's
> > fairly intuitive.
> 
> Exactly. I've got to start being more verbose in my examples. Here are
> some different examples and how I personally think they would work given
> this RFC and RFCs 159 and 161:
> 
>    my Dog $spot;              # $spot = Dog->CREATE
>    my Dog $spot (@args);      # $spot = Dog->CREATE(@args)
>    my Dog $spot = "Spot";     # $spot = Dog->CREATE;
> $spot->STORE("Spot")
>    my Dog $spot (@args) = "Spot";   # $spot = Dog->CREATE(@args);
>                                     # $spot->STORE("Spot");

Regarding the STORE call, if RFC 159 gets adopted, sure, why not.  I'll
mention that alternative in the RFC's next version.

I'm not sure about this extra argument syntax.  I didn't really intend the
RFC to replace the traditional constructor call in all cases, but to simply
provide a seemingly more natural and clean way of doing it in the simplest
of cases.

I need to mention the:

    my int $x;
    my int $i = 4;
    my int ($x, $y, $z) = (4, 5, 6);

syntax in the RFC.  It describes more of the intent behind the change.

Sure, the my Dog $spot (@args) looks neat, but it's not any less complex
than a normal constructor call; if anything, it's moreso. There's no current
precedent in Perl for such syntax, and I'm loathe to add it without more
reason.


> Hopefully that's clear enough. And as everyone's noted, nobody's
> claiming you can't do this:
> 
>    my $spot = Dog->new("Spot", { @args });

Indeed, I would also prefer this syntax if there are multiple arguments
(rather than a single scalar to assign).


Michael
--
Administrator                      www.shoebox.net
Programmer, System Administrator   www.gallanttech.com
--

Reply via email to