Ключевое слово return в Ruby
В этой статье мы собираемся изучить следующие темы:
- явный
return
- неявный
return
- неожиданные
return
s 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
.