Wie kann ich die erforderliche else-Klausel umdefinieren?

7

Ich habe eine C # -Methode, die ungefähr so ​​aussieht:

%Vor%

In F # sieht das wegen der obligatorischen else-Verzweigungen etwas hässlicher aus:

%Vor%

Was wäre eine sauberere Art, dies in F # zu schreiben?

    
Asik 15.08.2012, 20:19
quelle

6 Antworten

6

Nun, da "etwas Arbeit machen" bereits (vermutlich) zwingend ist, dann denke ich, dass

%Vor%

ist kürzer und sinnvoll. (Mit anderen Worten, else ist nur für if -Ausdrücke obligatorisch, die Werte zurückgeben; da Sie imperative Arbeit ausführen, verwenden Sie if -Anweisungen, die kein else benötigen.)

    
Brian 15.08.2012, 20:22
quelle
13
%Vor%     
Daniel 15.08.2012 21:15
quelle
9

Wie in den Kommentaren erwähnt, können Sie die Bedingung umkehren. Dies vereinfacht den C # -Code, weil Sie schreiben können:

%Vor%

Obwohl F # keine Imperativ-Rückgabe hat (wenn Sie zurückkehren wollen, benötigen Sie sowohl echte als auch falsche Verzweigungen), vereinfacht es diesen Code auch ein wenig, weil Sie schreiben können:

%Vor%

Sie müssen false mehrmals schreiben, aber Sie müssen Ihren Code nicht zu weit einrücken. Es gibt eine unbegrenzte Anzahl von komplexen Lösungen, aber dies ist wahrscheinlich die einfachste Option. Für eine komplexere Lösung könnten Sie einen F # -Berechnungsausdruck verwenden, der die Verwendung von imperativem Stil ermöglicht . Dies ist vergleichbar mit Daniels Berechnung, aber ein bisschen stärker.

    
Tomas Petricek 15.08.2012 21:16
quelle
6

Bitte haben Sie keine Angst, Funktionen zu extrahieren. Dies ist der Schlüssel zur Steuerung komplexer Logik.

%Vor%     
ChaosPandion 15.08.2012 20:53
quelle
4

Die Verwendung der Funktionen höherer Ordnung im Modul Option kann diesen Fluss sehr sauber ohne einen änderbaren Zustand machen:

%Vor%

Oder für weitere Klarheit, benannte Funktionen anstelle von lambdas verwenden:

%Vor%     
ildjarn 15.08.2012 20:48
quelle
1

Sie könnten Ihren Code in eine Art Wahrheitstabelle umwandeln, die je nach Fall aus Ihrer realen Welt mehr explizit macht:

%Vor%     
Kit 17.08.2012 07:00
quelle

Tags und Links