Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

Answer: How do I make deterministic constructors?

by herveus (Parson)
on Aug 29, 2001 at 18:10 UTC ( #108757=categorized answer: print w/replies, xml ) Need Help??

Q&A > object-oriented programming > How do I make deterministic constructors? - Answer contributed by herveus



sub new { if (@_ == 2) { new_1(@_); } elsif (@_ == 1) { new_2(@_); } else { warn "bad parameter..."; } }
where subs new_1 and new_2 are your alternatives. You can do more detailed checking of the characteristics of the contents of @_ as needed. Of course, there is Class:Multimethods as mentioned earlier to automate this.


Replies are listed 'Best First'.
Re: Answer: How do I make deterministic constructors?
by Hofmator (Curate) on Aug 29, 2001 at 18:23 UTC

    I'd suggest using the goto &subroutine syntax for this case:

    sub new { if (@_ == 2) { goto &new_1; } elsif (@_ == 1) { goto &new_2; } else { warn "bad parameter..."; } }
    The benefit of this is that in every respect (e.g. for caller or croak) it looks like new_1 (or new_2) have been called directly - and not through new.

    -- Hofmator

Log In?

What's my password?
Create A New User
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (7)
As of 2016-10-20 20:39 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (281 votes). Check out past polls.