Я использую return, когда просматриваю список, и хочу выйти из функции, если какой-либо член списка соответствует критериям. Я мог бы сделать это с помощью одной инструкции вроде:
list.select{|k| k.meets_criteria}.length == 0
в некоторых ситуациях, но
list.each{|k| return false if k.meets_criteria}
это тоже одна линия - с, на мой взгляд, некоторой дополнительной гибкостью. Например, в первом примере предполагается, что это единственная строка в методе, и что мы хотим вернуться из этой точки, несмотря ни на что. Но если это тест, чтобы увидеть, безопасно ли продолжить остальную часть метода, в первом примере нужно будет обработать это другим способом.
РЕДАКТИРОВАТЬ:
Чтобы добавить гибкости, рассмотрите следующую строку кода:
list_of_method_names_as_symbols.each{|k| list_of_objects.each{|j| return k if j.send(k)}}
Я уверен, что это можно сделать одной строкой и без этого return
, но я не понимаю, как это сделать.
Но теперь это довольно гибкая строка кода, которую можно вызывать с любым списком логических методов и списком объектов, реализующих эти методы.
РЕДАКТИРОВАТЬ
Следует отметить, что я предполагаю, что эта строка находится внутри метода, а не блока.
Но это в основном стилистический выбор, я думаю, что в большинстве ситуаций вы можете и, возможно, должны избегать использования return
.