Это регулярные вызовы подпрограммы Perl? - PullRequest
3 голосов
/ 27 октября 2009

Я все еще пытаюсь освоить функции ООП в Perl. Я чего-то не понимаю, если у меня вызов подпрограммы, такой как:

My::Package::sub_name($param1,$param2)

будет ли отправлено «My :: Package» в качестве первого параметра? Я бы сказал, что нет, но я не уверен.

Ответы [ 2 ]

10 голосов
/ 27 октября 2009

(как говорит Манни) Это оператор -> , который переводит инвоканта в @_ (где инвокант является либо благословенным объектом, либо голым именем класса). :: в имени функции используется только для устранения неоднозначности пространства имен и не изменяется @_.

Опубликовано как ответ на предложение Гео, хотя я не хочу быть представителем блудницы:)

Это больше описано в документации: perldoc perlboot , perldoc perltoot .

8 голосов
/ 27 октября 2009

Почему бы тебе просто не попробовать?

Оповещение о спойлере:

Нет, первый параметр не будет именем пакета.

Однако, когда вы делаете:

My::Package->sub_name( $param1, $param2 )

вы получите имя пакета / класса в качестве первого параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...