Оператор return

Оператор return немедленно передает управление из функции в точку вызова с возвратом значения:

my @names = qw/ fred barney betty dino wilma pebbles bamm-bamm /;
my $result = &which_element_is("dino", @names);
sub which_element_is {
my($what, @array) = @_;
foreach (0..$#array) { # Индексы элементов @array
if ($what eq $array[$_]) {
return $_; # Ранний возврат при успешном поиске
}
}
1; -# Элемент не найден (включение return не обязательно)
}

Эта функция должна возвращать индекс заданного элемента ("dino") в массиве @names. Сначала в объявлении my указываются параметры: $what – искомое значение и @array – массив, в котором ведется поиск. В данном случае он представляет собой копию массива @names. Цикл foreach перебирает индексы @array (первый индекс равен 0, а последний – . При каждой итерации цикла foreach мы проверяем, равна1 ли строка $what элементу @array с текущим индексом. Если строки равны, функция немедленно возвращает текущий индекс.

Это самое распространенное применение ключевого слова return в Perl – немедленный возврат значения без выполнения оставшейся части функции.


Но что произойдет, если элемент не найден? В этом случае автор функции решил вернуть –1 как признак «значение не найдено». Вероятно, возврат undef лучше соответствует стилю Perl, но этот программист выбрал –1. Завершить функцию командой return –1 было бы синтаксически правильно, но ключевое слово return здесь необязательно. Некоторые программисты предпочитают использовать return для каждого возвращаемого значения. Например, это можно сделать, когда последнее вычисляемое выражение не находится в последней строке функции, как в приводившемся ранее примере &larger_of_fred_or_bar-ney. Его присутствие необязательно, но безвредно. Однако, по мнению многих программистов Perl, тратить силы на ввод семи лишних символов неразумно.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Perl на эту тему:
Аргументы
Возвращаемые значения
Вызов пользовательской функции
Вызов функции без &
Директива use strict

Вернуться в раздел: Perl / 3. Пользовательские функции