On Thu, Jun 05, 2008 at 10:45:08PM +0200, Moritz Lenz wrote: > > 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? > > We can't, because the subroutine call takes the invocant as the first > positional argument. If it should fall back (and I don't know if it > does), you have to declare sub bar(Foo $w, Int $x){ say "sub bar" }
You're correct, my examples suck today. Sorry about that. The "I don't know if it does" part of your answer is the crux of my question. Essentially, does having _any_ 'bar' multimethod in a class automatically suppress a fall back to a subroutine call, even if none of the multimethods' signatures match? Pm