Функции и их вызов

Как вы заметили, для каждой операции требуется свой собственный символ (оператор): для сложения чисел +, для конкатенации строк ., для деления чисел /, и так далее. Такой подход оправдан только для самых частых операций, ведь в реальной жизни есть тысячи разных задач. К тому же, даже если бы язык программирования включал в себя тысячу разных операторов, в какой-то момент программисту понадобился бы новый.

Любой язык программирования позволяет расширять набор операций. Такие новые операции называются «функциями». Давайте сначала научимся пользоваться уже созданными функциями, а уже потом будем создавать новые функции.

В PHP есть функция для возведения числа в какую-нибудь степень. Вызовем её:

<?php

$result = pow(2, 3); // => 8

Мы создали переменную $result и сказали интерпретатору записать в неё результат, который выдаст функция pow. Запись pow(2, 3) означает, что вызывается функция с именем pow и с аргументами (или с параметрами) 2 и 3. Вызванная функция вернула значение.

Аргументы — это информация, которую функция получает при вызове. Именно на основе этой информации функция, как правило, вычисляет что-то и выдает результат.

Функция pow возводит первое число в степень второго числа. В нашем примере мы возводили 2 в степень 3, поэтому в $result в итоге оказалось значение 8.

В современном PHP появился специальный оператор для возведения в степень, поэтому ту же задачу можно решить так:

<?php

$result = 2 ** 3; // => 8

Вызов функции всегда обозначается скобками (), идущими сразу за именем функции. В скобках может быть любое количество аргументов, а иногда — вообще ни одного. Количество зависит от выполняемой операции. Например для нахождения модуля числа используется функция с именем abs:

<?php

$result = abs(-5); // => 5
$result = abs(8);  // => 8

Как видно, эта функция принимает один аргумент (часто говорят «параметр») и возвращает его модуль. А вот пример функции, которая не принимает аргументов:

<?php

$result = rand();

Функция rand генерирует и возвращает случайное число.

Но математические операции — капля в море по сравнению со всем многообразием функций. Мощь в том, что вы можете создавать собственные функции — мы займёмся этим в следующем модуле. Любое действие, которое вы себе можете вообразить, в программировании представлено функциями.

Задание

В 7 королевствах жил один человек, который имел доступ к компьютерам и умел программировать — Сэм Тарли. Он занимался картографией, поэтому он написал для себя функцию calculateDistance, высчитываущую расстояние (в лигах) между городами. Функция принимает два строковых параметра — два названия городов, и возвращает число — расстояние между ними.

Вот пример использования, где на экран выводится расстояние между Lannisport и Bayasabhad:

<?php

use function HexletBasics\Functions\calculateDistance;

$distance = calculateDistance('Lannisport', 'Bayasabhad');
print_r($distance);

Первая строчка — это специальный код, подключающий функцию calculateDistance в вашу программу. Благодаря ней вы можете запускать функцию, но не видите её содержимое. Это обычное дело в программировании: вы знаете, что делает функция и как ей пользоваться, но не знаете как именно она работает внутри.

Воспользуйтесь функцией calculateDistance и выведите на экран расстояние между городами Qarth и Vaes Dothrak. Не копируйте пример, а создайте переменную с другим именем и напишите код с нуля самостоятельно.


Определения
  • Функция — операция, способная принимать данные и возвращать результат; фунция вызывается так: foo().

  • Аргумент — информация, которую функция получает при вызове.

Упражнение доступно только для авторизованных пользователей