php Пример оформления решения задачи в виде функции
Primary tabs
(заметка относится, как минимум, к этому списку задач)
Возьмём код из решения задачки (один из учеников), и прокомментирую его:
/** * Эта функция, которая решает задачу * (комментарий в стиле phpdoc) * * @param int $n номер числа */ function fib($n) { $a = 1; $b = 1; for ($d = 3; $d <= $n; $d++) { $c = $a + $b; $a = $b; $b = $c; } echo $c; } // а дальше идет код (его называют "клиентским"), // который и использует нашу функцию fib(7);// вызов функции с конкретными параметрами
Сейчас для нас не важно что именно делает функция, важно что снаружи она получает значение (в данном случае одно типа integer) и выполняет свою работу (в примере выше она рассчитывает по переданному параметру некоторое другое значение, и после того как рассчет окончен выводит полученное значение на экран в строке:
echo $c;
).
Обратите внимание, что эта функция оказывает побочный эффект прямо в своем теле (выводит значение на экран), а это не всегда удобно -- что если мы хотим просто использовать это значение снаружи, скажем просуммировав его с чем-то и только потом выводя на экран?
В этом случае оказывается, что функция, которая возвращает значение универсальнее той, которая его распечатывает (ведь то что возвращается всегда можно распечатать снаружи, как именно мы увидим ниже), поэтому "идеальным" с точки зрения повторного использования кода функции будет решение:
/** * Эта функция, которая решает задачу * (комментарий в стиле phpdoc) * * @param int $n номер числа * @return int */ function fib($n) { $a = 1; $b = 1; for ($d = 3; $d <= $n; $d++) { $c = $a + $b; $a = $b; $b = $c; } return $c; } // а дальше идет код (его называют "клиентским"), // который и использует нашу функцию echo fib(7);// вызов функции с конкретными параметрами // и сразу же распечатка
Уточним, для лучше понимания, что клиентский код в последнем примере можно было бы переписать как:
$result = fib(7); echo $result;
Но для краткости записи кода, возвращаемое нашей пользовательской функцией fib() значение используется в echo() напрямую:
echo fib(7);
- Log in to post comments
- 2584 reads