Stories
Slash Boxes
Comments
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More | Login | Reply
Loading... please wait.
  • I'm not sure if the first example is fair. Simple method overloading in Java or C++ is generally used for functions that can take different parameter types, which isn't an issue in Perl, or to have functions with optional parameters which again isn't much of a problem in Perl:

    sub someMethod {
        my $self = shift;
        my $foo  = shift || 1;
        ...
    }

    I think that method overloading is more tied to the fact the a language is statically typed and not necessarily something that Perl can learn from.

    Which isn't to say that there aren't many things that we could learn from other languages. :-)

    John.
    --
    • Well, you say it's not much of a problem, but look at the snippet you posted:

      sub someMethod {
          my $self = shift;
          my $foo  = shift || 1;
          ...
      }

      Can $foo be 0? Your code says 'no', but that might or might not be what you meant. Also, by the time you've finished the $foo line, you no longer can easily tell whether or not you even passed an argument for $foo.

      In my original example, the code might do strange things if too many arguments are passed, or if they're n

      • When I said that it wasn't a problem I meant that it wasn't a problem to implement. Which isn't to say that there won't be problems in the implementation.

        Some of these problems could be solved efficaciously with method overloading. Nevertheless, I still think that method overloading is mainly a necessity of static typing. Which for me is a more useful language feature and one that we have learned from since it will be included in Perl 6.

        John.
        --