Повернення значень функцією

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Повернення значень з функції

По завершенні роботи функції часто буває корисно повернути деяке значення, для чого результат виклику функції зазвичай присвоюють деякої змінної. Функції можуть повертати значення будь-яких типів, у тому числі масиви та списки. Приклад наведено в лістингу 4.2, де функція calculate_cost () обчислює податок з заданої суми і повертає загальну суму разом з податком. Перш ніж переходити до розгляду лістингу, перегляньте короткий опис алгоритму на псевдокоді:

  • Перед викликом функції задати значення змінних: $ price (ціна товару) і $ tax (податкова ставка).
  • Оголосити функцію calculate_cost (). Коли Ви функція отримує два параметри: податкову ставку і ціну товару.
  • Обчислити ціну з урахуванням податку і повернути її командою return.
  • Викликати calculate_cost () і привласнити значення, повернене функцією, змінної $ total_cost.
  • Вивести відповідне повідомлення.

Лістинг 4.2. Створення функції для обчислення податку

$ 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.4, але спочатку прочитайте алгоритм на псевдокоді:

  • Оголосити функцію best_years (), що викликається з одним параметром. Параметр $ label визначає сорт вина, для якого користувач хотів би дізнатися три рекомендованих року.
  • Оголосити два масиви, $ merlot і $ zinfandel. У кожному масиві зберігається три рекомендованих року для відповідного сорту вина.
  • Написати команду return, яка б використовувала особливі можливості змінних. Вираз $ $ label спочатку інтерпретує змінну $ label, а потім інтерпретує отримане значення як ім'я другій змінної. У цьому прикладі масив merlot повертається у вигляді списку, і кожен повертається рік займає свою позицію в списку, для якого викликалася функція.
  • Вивести повідомлення з інформацією про рекомендовані роках.

Лістинг 4.4. Повернення функцією декількох величин

/ / Сорт вина, для якого виводяться кращі роки

$ 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.