Я використовую 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
.