Відмінності між версіями «Повернення значень функцією»
Kolbka (обговорення • внесок) |
Kolbka (обговорення • внесок) |
||
(не показані 3 проміжні версії цього учасника) | |||
Рядок 32: | Рядок 32: | ||
/ / $ Total cost = 26.49<br><br> | / / $ Total cost = 26.49<br><br> | ||
− | Функції, не повертають значень, також називаються процедурами. | + | Функції, не повертають значень, також називаються процедурами.<br><br> |
+ | |||
+ | |||
+ | Функція також може повертати '''відразу кілька значень''' за допомогою списку. Продовжуючи кулінарну тему, давайте напишемо функцію, яка б повертала три кращих року для зазначеного сорту вина. Функція приведена в лістингу 4.4, але спочатку прочитайте алгоритм на псевдокоді:<br><br> | ||
+ | |||
+ | * Оголосити функцію best_years (), що викликається з одним параметром. Параметр $ label визначає сорт вина, для якого користувач хотів би дізнатися три рекомендованих року.<br> | ||
+ | * Оголосити два масиви, $ merlot і $ zinfandel. У кожному масиві зберігається три рекомендованих року для відповідного сорту вина.<br> | ||
+ | * Написати команду return, яка б використовувала особливі можливості змінних. Вираз $ $ label спочатку інтерпретує змінну $ label, а потім інтерпретує отримане значення як ім'я другій змінної. У цьому прикладі масив merlot повертається у вигляді списку, і кожен повертається рік займає свою позицію в списку, для якого викликалася функція.<br> | ||
+ | * Вивести повідомлення з інформацією про рекомендовані роках.<br><br> | ||
+ | |||
+ | Лістинг 4.4. Повернення функцією декількох величин<br> | ||
+ | |||
+ | / / Сорт вина, для якого виводяться кращі роки<br> | ||
+ | |||
+ | $ Label = "merlot";<br> | ||
+ | |||
+ | / / Функція використовує масиви і "змінну у змінній"<br> | ||
+ | |||
+ | / / Для повернення кількох значень.<br> | ||
+ | |||
+ | function best_years ($ label) (<br> | ||
+ | |||
+ | $ Merlot = array ("1987", "1983", "1977");<br> | ||
+ | |||
+ | $ Zinfandel = array ("1992", "1990", "1989");<br> | ||
+ | |||
+ | return $ $ label;<br> | ||
+ | |||
+ | )<br><br> | ||
+ | |||
+ | / / Функція list () використовується отримання повертаються значень.<br> | ||
+ | |||
+ | list ($ yr_one, $ yr_two. $ yr_three) = best_years ($ label);<br> | ||
+ | |||
+ | print "$ label had three particularly remarkable years: $ yr_one. $ yr_two, and $ yr_three.";<br><br> | ||
+ | |||
+ | Програма виводить наступний результат:<br><br> | ||
+ | |||
+ | merlot has three particularly remarkable years: 1987, 1983 and 1977.<br><br> |
Поточна версія на 10:53, 29 квітня 2010
Повернення значень з функції
По завершенні роботи функції часто буває корисно повернути деяке значення, для чого результат виклику функції зазвичай присвоюють деякої змінної. Функції можуть повертати значення будь-яких типів, у тому числі масиви та списки. Приклад наведено в лістингу 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.