Używam powrotu, gdy przeglądam listę i chcę wyjść z funkcji, jeśli którykolwiek członek listy spełnia kryteria. Mogę to osiągnąć za pomocą jednego stwierdzenia, takiego jak:
list.select{|k| k.meets_criteria}.length == 0
w niektórych sytuacjach, ale
list.each{|k| return false if k.meets_criteria}
to też jedna kwestia - z pewną dodatkową elastycznością. Na przykład w pierwszym przykładzie założono, że jest to jedyna linia w metodzie i chcemy wrócić z tego punktu bez względu na wszystko. Ale jeśli jest to test mający na celu sprawdzenie, czy można bezpiecznie przejść do pozostałej części metody, pierwszy przykład będzie musiał potraktować to w inny sposób.
EDYTOWAĆ:
Aby zwiększyć elastyczność, rozważ następujący wiersz kodu:
list_of_method_names_as_symbols.each{|k| list_of_objects.each{|j| return k if j.send(k)}}
Jestem pewien, że można to osiągnąć w jednej linii, bez return, ale nie wiem, jak to zrobić.
Ale teraz jest to dość elastyczny wiersz kodu, który można wywołać za pomocą dowolnej listy metod logicznych i listy obiektów, które implementują te metody.
EDYTOWAĆ
Należy zauważyć, że zakładam, że ta linia znajduje się wewnątrz metody, a nie bloku.
Ale jest to głównie wybór stylistyczny, myślę, że w większości sytuacji można i prawdopodobnie należy unikać używania return.