2014-12-04 35 views
3

我想重载Moops中的一些方法。如何在Moops中重载方法?

我有试过下面的代码:

method setIdNum() { 
     print "Please enter ID number: "; 
     chomp (my $input = <STDIN>); 
     $self->$idNum($input); 
} 

method setIdNum(Int $num) { 
     $self->$idNum($num); 
} 

但它错误说setIdNum被重新定义。

回答

3

如果你想多方法,你必须通过把multimethod关键字前面明确要求他们:

multi method setIdNum() { 
    print "Please enter ID number: "; 
    chomp (my $input = <STDIN>); 
    $self->$idNum($input); 
} 

multi method setIdNum(Int $num) { 
    $self->$idNum($num); 
} 

您可能还需要明确要求你的类声明中Kavorka支持:

class Whatever { 
    use Kavorka qw(multi method); 
    ... 
+0

工作完美无需导入Kavorka方法!谢谢。 – BackPacker777 2014-12-04 17:37:09