Все о Perl 6: Подпрограммы и сигнатуры
Подпрограмма представляет собой участок кода, выполняющий определенную задачу. Она может оперировать передаваемыми ей при вызове данными (аргументами) и может производить результаты (возвращаемые значения). Сигнатурой подпрограммы является описание всех передаваемых при вызове аргументов и любых возвращаемых значений.
Первая глава демонстрирует простые подпрограммы. Операторы, описанные во второй главе, являются подпрограммами, которые Perl 6 обрабатывает необычным способом. Однако, они будут описаны поверхностно насколько это возможно.
Определение подпрограмм
Определение подпрограммы состоит из нескольких частей. Сперва следует декларатор sub
, указывающий начало определения подпрограммы. Затем - необязательное имя и необязательная сигнатура. И наконец - тело подпрограммы: ограниченный фигурными скобками блок кода. Этот код выполняется каждый раз при вызове подпрограммы.
К примеру, в коде:
sub panic() {
say "Oh no! Something has gone most terribly wrong!";
}
... определена подпрограмма с именем panic
. Ее сигнатура отсутствует, а тело состоит их единственного оператора say
.
По умолчанию, подпрограммы ограничена областью лексической видимости, как и любая переменная объявленная с помощью my
. Это подразумевает, что подпрограмма может быть вызвана, только в границах той области видимости ( Как правило это блок кода ), внутри которой она была определена. Чтобы подпрограмма стала доступной внутри всего пакета используется декларатор (ключевое слово) our
:
{
our sub eat() {
say "om nom nom";
}
sub drink() {
say "glug glug";
}
}
eat(); # om nom nom
drink(); # fails, can't drink outside of the block
Эта статья входит в книгу "Все о Perl 6".