Я использую 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
, ноот макушки головы я не вижу как.
Но теперь это довольно гибкая строка кода, которую можно вызывать любым списком логических методов и списком объектов, реализующих эти методы.
EDIT
Следует отметить, что я предполагаю, что эта строка находится внутри метода, а не блока.
Но это в основном стилистический выбор, я думаю, что в большинстве ситуаций выможно и, возможно, следует избегать использования return
.