Ich verwende return, wenn ich eine Liste durchlaufe, und ich möchte die Funktion beenden, wenn ein Mitglied der Liste ein Kriterium erfüllt. Ich könnte dies mit einer einzigen Aussage erreichen wie:
list.select{|k| k.meets_criteria}.length == 0
in einigen Situationen aber
list.each{|k| return false if k.meets_criteria}
ist auch eine Zeile - mit meiner Meinung nach etwas mehr Flexibilität. Im ersten Beispiel wird beispielsweise davon ausgegangen, dass dies die einzige Zeile in der Methode ist und dass wir von diesem Punkt aus zurückkehren möchten, egal was passiert. Wenn dies jedoch ein Test ist, um festzustellen, ob es sicher ist, mit dem Rest der Methode fortzufahren, muss das erste Beispiel dies anders behandeln.
BEARBEITEN:
Beachten Sie die folgende Codezeile, um die Flexibilität zu erhöhen:
list_of_method_names_as_symbols.each{|k| list_of_objects.each{|j| return k if j.send(k)}}
Ich bin mir sicher, dass dies in einer Zeile ohne erreicht werden kann return
, aber auf den ersten Blick sehe ich nicht, wie.
Aber dies ist jetzt eine ziemlich flexible Codezeile, die mit jeder Liste von booleschen Methoden und einer Liste von Objekten, die diese Methoden implementieren, aufgerufen werden kann.
BEARBEITEN
Es sollte beachtet werden, dass ich davon ausgehe, dass sich diese Zeile innerhalb einer Methode befindet, nicht in einem Block.
Aber dies ist meistens eine stilistische Entscheidung. Ich denke, dass Sie in den meisten Situationen die Verwendung vermeiden können und möglicherweise sollten return
.