Ist Option ein Wert ein gutes Muster?

8

Ich habe vor kurzem das folgende Stück Scala geschrieben:

%Vor%

Ich mochte wirklich nicht die Art, wie das floss. Um zu verstehen, was passiert, musst du mit f in der Mitte beginnen, links nach fromFile lesen, rechts nach mkString lesen, links nochmal nach toFoo lesen. Ugh.

Besonders nachdem man sich an funktionale Transformationen von Sequenzen gewöhnt hat, ist dies schwer zu lesen. Mein nächster Versuch sieht so aus:

%Vor%

Ich mag den Fluss von diesem viel besser. Sie können sehen, was passiert Ist das eine gute Verwendung der Klasse Option ? Oder missbrauche ich es? Gibt es ein besseres Muster, das ich verwenden kann, um den gleichen Fluss zu erreichen?

    
leedm777 03.02.2011, 17:11
quelle

3 Antworten

25

Das ist vollkommen in Ordnung. Es gibt jedoch eine Methode |> in Scalaz , die eine bessere Lösung bietet, und Sie können sie selbst erstellen, wenn Sie nicht möchten ganz Scalaz:

%Vor%

Persönlich tendiere ich dazu, eine Menge Code zu schreiben, der Klammern benötigt, und ich mag Methoden in den meisten Fällen besser als Operatoren. In meinem Code rufe ich normalerweise |> "use" an, aber es ist dasselbe:

%Vor%

In Scala 2.11 oder später können Sie mit (etwas) weniger Syntax das gleiche Verhalten und eine verbesserte Leistung erzielen:

%Vor%     
Rex Kerr 03.02.2011, 17:23
quelle
5

Ich habe keine Probleme mit den anderen hier gegebenen Antworten, aber haben Sie darüber nachgedacht, den Namen von toFoo in etwas zu ändern, das besser fließt? Ich meine, toFoo riecht wirklich nach etwas, das auf der rechten eines Ausdrucks stehen sollte, aber wenn du es in etwas anderes umbenennst, könnte es auch auf links passen.

%Vor%     
Wilfred Springer 04.02.2011 07:09
quelle
4

Sie fügen toFoo zu String hinzu, indem Sie das Bibliotheksmuster pimpen. Dann wird es:

%Vor%     
Daniel C. Sobral 03.02.2011 17:38
quelle

Tags und Links