File: demo.super.pl

package info (click to toggle)
libclass-multimethods-perl 1.70-4
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, sarge
  • size: 180 kB
  • ctags: 89
  • sloc: perl: 855; makefile: 37
file content (42 lines) | stat: -rwxr-xr-x 625 bytes parent folder | download | duplicates (2)
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/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());