1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#!/usr/bin/env perl -w
package Ancestor;
package Base1; @ISA = qw( Ancestor );
sub new { bless {}, $_[0] }
package Base2;
sub new { bless {}, $_[0] }
package Der; @ISA = qw( Base1 Base2 );
package main;
use Class::Multimethods;
multimethod mm => (Der) => sub
{
# mm(superclass($_[0] => Missing));
mm(superclass($_[0] => Base2));
# mm(superclass($_[0]));
print "mm(Der)\n";
};
multimethod mm => (Ancestor) => sub
{
print "mm(Ancestor)\n";
};
multimethod mm => (Base2) => sub
{
print "mm(Base2)\n";
};
multimethod mm => (Base1) => sub
{
print "mm(Base1)\n";
};
mm(Base1->new());
mm(Base2->new());
mm(Der->new());
|