mauke / Function-Parameters

Function::Parameters - define functions and methods with parameter lists ("subroutine signatures")
https://metacpan.org/pod/Function::Parameters
18 stars 19 forks source link

The invocant is not an argument. #16

Open schwern opened 9 years ago

schwern commented 9 years ago
$ perl -wle 'use Function::Parameters qw(:strict);  method foo($bar) {}  main->foo()'
Too few arguments for method foo (expected 2, got 1) at -e line 1.
    main::foo("main") called at -e line 1

I would expect that to say "expected 1, got 0".

From the caller's point of view, the invocant is not an argument. If you asked someone how many arguments are being passed to $obj->method(1, 2, 3) they'd say three, not four. That Perl methods put the invocant on the argument stack is an odd quirk of Perl.