On Thu, Jun 05, 2008 at 05:29:25PM +0100, Daniel Ruoso wrote:
> Qui, 2008-06-05 às 11:04 -0500, Patrick R. Michaud escreveu:
> > Does fall back to a subroutine occur anytime we don't have
> > a method with a matching signature? For example, if we have
>
> as far as I understand it, it only falls back to sub-dispach if the
> method dispatch would otherwise fail, which basically means...
>
> > class Foo {
> > multi method bar(Num $x) { say "Foo::bar"; }
> > }
> > sub bar(Int $x) { say "sub bar"; }
> > my $foo = Foo.new;
> > $foo.bar(3);
>
> since Num.ACCEPTS(3) should return true (rakudo is failing that), the
> method dispatching should be successfull, therefore no fallback occurs.
Okay, so my bad example didn't provide an answer to my
original question. Let's try it this way:
class Foo {
multi method bar(Dog $x) { say "Foo::bar"; }
}
sub bar(Int $x) { say "sub bar"; }
my $foo = Foo.new;
$foo.bar(3);
In this case, since Foo has a bar method (but not one matching Int),
do we still fall back to the subroutine call? How about if the method
isn't a multimethod (or if the sub is a multisub)?
Pm