Utilizo return cuando reviso una lista y quiero salir de la función si algún miembro de la lista cumple con un criterio. Podría lograr esto con una sola declaración como:
list.select{|k| k.meets_criteria}.length == 0
en algunas situaciones, pero
list.each{|k| return false if k.meets_criteria}
es una línea también, con, en mi opinión, cierta flexibilidad adicional. Por ejemplo, el primer ejemplo asume que esta es la única línea del método y que queremos volver desde este punto pase lo que pase. Pero si esta es una prueba para ver si es seguro continuar con el resto del método, el primer ejemplo deberá manejar eso de una manera diferente.
EDITAR:
Para agregar algo de flexibilidad, considere la siguiente línea de código:
list_of_method_names_as_symbols.each{|k| list_of_objects.each{|j| return k if j.send(k)}}
Estoy seguro de que esto se puede lograr, en una línea, sin return
, pero no veo cómo.
Pero esta es ahora una línea de código bastante flexible que se puede llamar con cualquier lista de métodos booleanos y una lista de objetos que implementan esos métodos.
EDITAR
Cabe señalar que supongo que esta línea está dentro de un método, no en un bloque.
Pero esta es principalmente una elección de estilo, creo que en la mayoría de las situaciones, puede y posiblemente debería evitar usar return
.
return
inmediatamente del método. Si piensa en ese ejemplo, no sería útil calcular la maldad si sabe que todo está bien. Editaré mi respuesta para que quede más claro.return
,break
etc. sin parámetro; regresaránnil
por defecto.