在Perl 6中调用类内的私有方法

在Perl 6中调用类内的私有方法,perl,raku,Perl,Raku,在Perl 6中,我无法在类中调用私有方法: class MyClass { method !my-private-method($var1) { # .... } method my-method() { my $my-var1 = !my-private-method(123); # not found (Undeclared routines) my $my-var1 = $!my-private-method(123); # not found (

在Perl 6中,我无法在类中调用私有方法:

class MyClass {

  method !my-private-method($var1) {
    # ....
  }

  method my-method() {
    my $my-var1 = !my-private-method(123); # not found (Undeclared routines)
    my $my-var1 = $!my-private-method(123); # not found (Undeclared routines)
    my $my-var1 = $.my-private-method(123); # not found (Undeclared routines)
    my $my-var1 = my-private-method(123); # not found (Undeclared routines)

那么如何从
我的方法
调用
我的私有方法

您必须在实例对象上调用私有方法

my $my-var1 = self!my-private-method(123);

应该可以工作。

您确定那些带有破折号的变量和方法名吗?它有点像COBOL…@JonathanLeffler,是的。出于好奇,有没有办法在没有
self
的情况下称它为COBOL?@jawanam我不确定-我自己也是一个非常优秀的新手。你可以在类对象上称它。如果您想要一个私有子例程,只需在类定义中编写一个子例程,因为默认情况下子例程是词法的。