Если у меня есть общедоступный метод, я могу вызвать его внутри своего класса, используя как $.name
и self.name
:
class TEST {
has Int $.a;
method b($x) {
return $!a * $x;
}
method c($y) {
return self.b($y) * 3; # or $.b($y)
}
}
my $m = TEST.new(a => 10);
say $m.c(2); # 60
Но если я сделаю b
приватным методом, я могу назвать его только с помощью self!b
, а не $!b
, иначе я получаю следующее сообщение об ошибке:
Attribute $!b not declared in class TEST
Что за этим правилом? Каковы правила вызова метода внутри его собственного класса?