Kann ich den Rückgabewert innerhalb von 'sichern' in Ruby bekommen?

9
%Vor%

Gibt es ein (möglicherweise Metaprogrammierung) Prinzip / Weg, um den Rückgabewert einer Methode innerhalb der "Gewähr" -Klausel zu erhalten, die Teil der Methodendefinition ist (die wir alle wissen, egal was ausgeführt wird)?

    
daremkd 13.10.2014, 23:02
quelle

2 Antworten

4

Weisen Sie eine Variable zu

Machen Sie einfach Ihren Rückgabewert zu einer Variablen. Sie können die Variable innerhalb Ihrer area-Anweisung verwenden, aber der Rückgabewert für die Methode wird die letzte Anweisung sein, die im nicht-außergewöhnlichen Teil der Methode ausgewertet wird. Zum Beispiel:

%Vor%

Early Returns arbeiten gleich

Beachten Sie, dass die obige Technik auch dann funktioniert, wenn Sie zu einem früheren Zeitpunkt zurückkehren, da der Wert, der an das return Schlüsselwort übergeben wird, immer noch der letzte nichtausgewertete Ausdruck ist. Zum Beispiel sollte die folgende Methode niemals false zurückgeben:

%Vor%     
Todd A. Jacobs 14.10.2014, 04:12
quelle
1

Warum brauchst du das in ensure ? Wenn der Hauptteil der Methode ohne Ausnahme abgeschlossen wurde, wird der Rückgabewert dieses Teils von der Methode zurückgegeben (es sei denn, Sie haben return in ensure ). Wenn eine Ausnahme eintritt, wird der return in Ihrem Hauptteil überhaupt nicht berechnet.

Natürlich können Sie immer den folgenden (sehr hässlichen IMO) Code verwenden. Aber bitte tu das nicht. Eine bessere Idee ist es, nur den Ressourcenbereinigungscode im Sicherstellungsblock zu lassen.

%Vor%     
moonfly 13.10.2014 23:54
quelle

Tags und Links