Возврат значений

В модуле «Вызов функций» мы в основном работали с функциями, которые возвращают результат, а не выводят его на экран. Честно говоря, вывод на экран — фактически обучающий элемент. В реальном коде на экран никто ничего не выводит (за исключением утилит командной строки). Функции возвращают данные, которые потребляются другими функциями.

И только в конечном счете что-то выводится на экран, а иногда и ничего, ведь приложение Java может просто отвечать на запрос, который к нему делает какое-то другое приложение, и результат выполнения запроса тоже каким-то способом возвращать этому приложению, а уже оно будет его показывать на экране.

Научиться писать функции, которые возвращают информацию — первый шаг на пути к построению по-настоящему полезных программ.

Начнем с тривиального примера: создадим и вызовем функцию, которая принимает два числа и возвращает разность первого и второго. Назовём её sub, от англ. “subtract” — «вычесть»:

public static void main(String[] args) {
  System.out.print(sub(10, 7));
}

static int sub(int a, int b) {
  var result = a - b;
  return result;
}
3

Обратите внимание: мы знаем, что вызов функции — выражение, поэтому мы передали вызов одной функции в вызов другой функции — System.out.print(sub(10, 7)).

Возврат задаётся специальной инструкцией return. Cправа от return помещается выражение. Любое выражение. То есть, мы можем делать вычисления сразу после return без создания переменной result:

public static void main(String[] args) {
  System.out.print(sub(2018, 1975));
}

static int sub(int a, int b)
{
  return a - b;
}
43

Задание

Сэм создаёт генеалогические деревья разных семей. Ему постоянно приходится рассчитывать количество места, занимаемое именами родителей на экране.

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

Для реализации используйте уже существующую функцию Functions.parentFor:

  • Получение имени матери Functions.parentFor(child, "mother"), где child — имя ребёнка.
  • Получение имени отца Functions.parentFor(child, "father"), где child — имя ребёнка
  • Длину строки str можно получить таким образом: str.length() - это особый способ вызова функций, который мы подробно пока изучать не будем

Вам не нужно вызывать свою функцию, только определить её.

Как обычно, функцию нужно сделать public static, а не просто static, чтобы мы смогли вызвать ее из другого класса.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

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

Пожалуйста, авторизуйтесь, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт.