Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Re^2: Static method vs virtual method

by przemo (Scribe)
on May 09, 2009 at 12:26 UTC ( #763035=note: print w/replies, xml ) Need Help??


in reply to Re: Static method vs virtual method
in thread Static method vs virtual method

Generally, static methods ignore the first argument because they already know which class they are in. new() is implemented by almost all packages as a static method.

Yet, because of inheritance and possibility of being called on behalf of other package, well-behaving new() shouldn't ignore the first argument. In simplified case like this:

sub new { my ($class, %opts) = @_; my $self = { %opts }; bless $self, $class; }

Replies are listed 'Best First'.
Re^3: Static method vs virtual method
by freonpsandoz (Beadle) on Oct 14, 2016 at 05:42 UTC

    Doesn't this advice directly contradict the advice of lakshmananindia, who states that new() should be static? It seems that there is a lack of consensus on whether new() should be static or virtual. This is a real problem, because no facility is provided to force the caller to invoke new() the correct way by producing an error if the invocation is wrong.

      No. Static doesn't mean "ignoring the first argument", it means "expecting the class name as the first argument". Moreover, in Perl, you can create methods that are both static and virtual (the question is why).

      ($q=q:Sq=~/;[c](.)(.)/;chr(-||-|5+lengthSq)`"S|oS2"`map{chr |+ord }map{substrSq`S_+|`|}3E|-|`7**2-3:)=~y+S|`+$1,++print+eval$q,q,a,

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://763035]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others exploiting the Monastery: (3)
As of 2022-10-02 19:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My preferred way to holiday/vacation is:











    Results (12 votes). Check out past polls.

    Notices?