| |||||||||||||||||||||||||||||||||
Атомная энергетика. Ядерные реакторы АЭС. Атомный флот. Ядерное оружие |
|||
| РБМК-1000 | |||
| Гражданский суда | |||
| Авиация | |||
Высшая математика |
|||
| Задачи | |||
| Практикум | |||
| Карта сайта | |||
Возврат значений из функции |
По завершении работы функции часто бывает полезно вернуть некоторое значение, для чего результат вызова функции обычно присваивается некоторой переменной. Функции могут возвращать значения любых типов, в том числе массивы и списки. Пример приведен в листинге 4.2, где функция calculate_cost( ) вычисляет налог с заданной суммы и возвращает общую сумму вместе с налогом. Прежде чем переходить к рассмотрению листинга, просмотрите краткое описание алгоритма на псевдокоде: Перед вызовом
функции задать значения переменных: $price (цена товара) и $tax (налоговая ставка). $price = 24.99; $tax = .06; function calculate_cost($tax, $price) { $sales_tax = $tax; return $price + ($price * $sales_tax); } // Обратите внимание на возврат значения функцией calculate_cost(). $total_cost = calculate_cost ($tax. $price); // Округлить цену до двух десятичных цифр. $total_cost = round($total_cost. 2); print "Total cost: $".$total_cost; // $total cost = 26.49 Функции, не возвращающие значений, также называются процедурами. Существует и другой способ использования возвращаемых значений, при котором вызов функции включается прямо в условную/циклическую команду. В следующей программе (листинг 4.3) сумма счета пользователя сравнивается с предельным размером кредита. Алгоритм на псевдокоде выглядит так: Объявить функцию check_limit( ), которая при
вызове получает два параметра. Первый параметр, $total_cost, определяет общую
сумму счета, накопленную пользователем до настоящего момента. Второй параметр,
$credit_limit, определяет максимальную сумму, которую может потратить пользователь. Листинг 4.3. Сравнение текущей суммы счета пользователя с предельным размером кредита $cost = 1456.22; $limit = 1000.00; function check_limit($total_cost. $credit_limit) if ($total_cost > $credit_limit) : return 0; endif; return 1; } if (check_limit($cost. $limit)) : // Продолжить закупки print "Keep shopping!"; else : print "Please lower your total bill to less than $".$limit."!"; endif; При выполнении листинга 4.3 будет выведено сообщение об ошибке, поскольку значение $cost превышает $limit. Функция также может возвращать сразу несколько значений при помощи списка. Продолжая кулинарную тему, давайте напишем функцию, которая бы возвращала три лучших года для указанного сорта вина. Функция приведена в листинге 4.4, но сначала прочитайте алгоритм на псевдокоде: Объявить функцию best_years( ), вызываемую
с одним параметром. Параметр $label определяет сорт вина, для которого пользователь
хотел бы узнать три рекомендуемых года. // Сорт вина, для которого выводятся лучшие годы $label = "merlot"; // Функция использует массивы и "переменную в переменной" // для возвращения нескольких значений. function best_years($label) { $merlot = array("1987", "1983", "1977"); $zinfandel = array("1992", "1990", "1989"); return $$label; } // Функция list( ) используется получения возвращаемых значений. list ($yr_one, $yr_two. $yr_three) = best_years($label); print "$label had three particularly remarkable years: $yr_one. $yr_two, and $yr_three."; Программа выводит следующий результат: merlot has three particularly remarkable years: 1987, 1983 and 1977. |
| На главную |