Ключевое слово return в Ruby

В этой статье мы собираемся изучить следующие темы:

  • явный return
  • неявный return
  • неожиданные returns
  • return в процедурах и лямбдах

Прежде, чем начать

Позвольте мне представить здесь платформу, которая помогла мне изучить большую часть моих знаний о Ruby. Действительно, Pluralsight - потрясающая платформа.

С 50+ курсами, которые охватывают различные темы по Ruby и Ruby on Rails, это лучший способ поднять свои знания на новый уровень!

Попробуйте бесплатно 👇😉



Спасибо за уделенное время!

Явный возврат

Ruby предоставляет ключевое слово, которое позволяет разработчику явно останавливать поток выполнения метода и возвращать определенное значение.

Это ключевое слово называется return.

производит

before return call
return call

Здесь мы видим, что вызов explicit_return_call выполняет все инструкции до вызова return 'return call'.

Когда эта инструкция выполняется, поток выполнения внезапно останавливается и возвращается строка 'return call'.

Итак, puts 'after return call' никогда не выполняется.

Посмотрим, что произойдет, если мы вызовем return без значения

Ключевое слово return возвращает nil, если в качестве аргумента не передано значение.

Неявный возврат

когда return не вызывается явно в методе, Ruby возвращает значение последней выполненной инструкции в методе

В методе implicit_return, поскольку if true всегда оценивается как true (господин очевидно), то последняя выполненная инструкция - 42. Таким образом, метод логически возвращает 42.

Поскольку метод rom_ebook содержит только одну инструкцию, возвращается строка 'Ruby Object Model — eBook'.

return и методы присвоения

Ключевое слово return ведет себя иначе, когда имеет дело с методами присваивания.

Здесь мы видим, что return обрабатывается, но возвращаемое значение полностью игнорируется нашим методом. Действительно, puts 'hello' никогда не выполняется из-за return.

Итак, метод MyClass#x= возвращает значение, переданное в качестве аргумента - в нашем случае 21.

неожиданный возврат

Ключевое слово return можно использовать только внутри метода

производит

Hello Mehdi

Здесь мы видим, что вызов return вне метода - даже внутри блока вызывает LocalJumpError.

В противном случае вызов return в блоке, инкапсулированном в метод, является допустимым синтаксисом.

Возврат в procs и lambdas

Ключевое слово return, когда оно вызывается в процедуре или лямбде, ведет себя иначе.

Я уже рассматривал эти различия в статье Proc vs Lambda.

Не стесняйтесь читать его для получения дополнительной информации. :-)

Вуаля!

Не стесняйтесь 👏 и поделитесь этой статьей, если она была для вас полезна. 🚀

Вот ссылка на мою последнюю статью: alias in Ruby.