in reply to Polymorphism?
Polymorphism generally refers to the ability to call the correct method on an object depending on its class. It also provides the ability to override methods in derived classes, and still be sure you're getting the one you want.
The term you're looking for is function overloading, which allows for functions of the same name in the same namespace to co-exist, provided they each have different prototypes. This can be achieved as mentioned above, by looking at @_ and if/elsif/else your way through it, or loop, or whatever you want.
What you -can't- do in perl is something like this:
This generates:sub blah($) { print "blah\n" } sub blah($$) { print "blah\n" }
on perl 5.005_03 (someone correct me if the behavior is any different in 5.6).Prototype mismatch: sub main::blah ($) vs ($$) at test.pl line 3.
So, in a sense, you can accomplish what you want to in perl, but not the way you can in other languages such as C++. What you're doing in perl doesn't fit the definition of function overloading, since it's actually calling the same function every time, instead of choosing a function to call based on parameters.
|
---|
Replies are listed 'Best First'. | |
---|---|
RE: Re: Polymorphism?
by merlyn (Sage) on Jul 10, 2000 at 00:56 UTC | |
by Russ (Deacon) on Jul 10, 2000 at 01:33 UTC |