Pull to refresh

Что возвращает return?

Level of difficultyEasy
Reading time2 min
Views18K

Ключевое слово return неразрывно соседствует с функциями в большинстве языков программирования. Но почему мы зовём эту инструкцию именно return, почему это «возврат»? Часто думают, что return используется здесь в смысле возврата значения из функции. Логика такая: мы хотим, чтобы функция вернула какое‑то значение, поэтому команда называется return.

Но, если задуматься, то мы найдём это странным. Потому что «возвращать» звучит будто мы сначала этой функции что‑то дали, а она потом это что‑то нам возвращает. Когда я заказываю еду домой, то сервис не говорит «мы вернём вам еду на дом». Тут лучше подойдёт какое угодно слово: «создадим», «произведём», «сгенерируем», но точно не «вернём». Ведь суть заказа в том и состоит, что у меня сейчас этой еды нет, и я хочу её получить. А с «вернуть» звучит будто я им её сначала выдам.

На самом деле ключевое слово return в программировании используется не потому, что оно может что‑то возвращать. Способность функции «вернуть» значение (или, как мы поняли, точнее будет сказать, например, «создать»), передав его в место вызова функции — это лишь побочное действие, а не обязательное поведение.

Команда return изначально использовалась в отношении последовательности исполнения кода. Когда вы вызываете функцию, происходит скачок исполнения программы в другое место её исходного кода. Например, если вы вызываете функцию foobar, то выполнение кода в этом месте как бы останавливается, и компьютер перепрыгивает туда, где находится тело функции. После выполнения кода в теле и происходит тот самый возврат в место вызова функции.

В этом и состоит идея ключевого слова return. А то, что функция ещё вместе с этим попутно может передать значение — это необязательный бонус. И то, что в большинстве языков программирования это объединилось в одну команду — лишь дань удобству. То есть, когда мы пишем, например, return 42, то в развёрнутом виде это нужно читать как return AND pass 42.

Ключевое слово return коварно — оно означает не совсем то, за что его обычно принимают. И, хотя такая неточность вряд ли сможет кому‑то создать проблемы, полезно знать как оно устроено на самом деле.


Эту поразившую меня заметку я услышал в подкасте «Мысли и методы» Рахима Давлеткалиева (выпуск #53 «Неочевидные сложности новичков, часть 2», 09:36−13:00) и был удивлён своему неведению в таком, казалось бы, очевидном вопросе. Надеюсь, это оказалось познавательно не только для меня.

Tags:
Hubs:
Total votes 68: ↑20 and ↓48-28
Comments71

Articles