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

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

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

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

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

Но это ошибки, сказав, что setIdNum переопределен.

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 );
  ...
Другие вопросы по тегам