2015-10-09 2 views
4

Я не могу назвать частный метод внутри класса в Perl 6:Вызов частного внутри класса в 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-private-method из my-method?

+0

Уверены ли вы в именах переменных и методов с тире в них? Это своего рода COBOL-like ... –

+0

@JonathanLeffler, да. –

ответ

7

Вы должны вызвать частный метод для объекта экземпляра.

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

должно работать.

+0

Из любопытства, есть ли способ назвать это без 'self'? –

+0

@jawanam Я не уверен - все равно очень новичок perl6. – friedo

+1

Вы можете вызвать его в объекте Class. Если вы хотите использовать частную подпрограмму, просто напишите подпрограмму в определении класса, поскольку субтитры по умолчанию являются лексическими. –

Смежные вопросы