Как я могу перегрузить методы в Moops?

Я хотел бы перегрузить некоторые методы в Moops.

Я попробовал следующий код:

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

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

Но он ошибается, говоря, что setIdNum переопределен.


person BackPacker777    schedule 04.12.2014    source источник


Ответы (1)


Если вам нужны мультиметоды, вы должны запросить их явно, поставив 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 );
  ...
person Mark Reed    schedule 04.12.2014
comment
Отлично работал без необходимости импортировать метод Каворки! Спасибо. - person BackPacker777; 04.12.2014