3

我想重载 Moops 中的一些方法。

我已经尝试了以下代码:

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

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

但它通过说 setIdNum 被重新定义而出错。

4

1 回答 1

3

如果你想要多方法,你必须在关键字multi前面明确要求它们:method

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 );
  ...
于 2014-12-04T17:12:24.187 回答