So etwas sollte den gleichen Effekt haben:
%Vor% F # scheint nicht auf die Methode in int
zu verweisen, also musste ich stattdessen System.Int32
verwenden.
In F # ist der Typ seq
ein Alias für die .NET IEnumerable
, daher funktioniert dieser Code auf Arrays, Listen usw.
Beachten Sie die Verwendung von Parse
im "point-free" -Stil - eine Funktion ohne ihr Argument kann direkt als Argument für eine andere Funktion verwendet werden, die diesen Typ erwartet. In diesem Fall hat Seq.map
diesen Typ:
Und da System.Int32.Parse
den Typ string -> int
hat, hat Seq.map System.Int32.Parse
den Typ seq<string> -> seq<int>
.
Wenn Sie auf eine minimale Anzahl von Zeichen abzielen, können Sie die von Ganesh veröffentlichte Lösung in etwa so vereinfachen:
%Vor% Das macht ziemlich genau dasselbe - die Funktion int
ist eine generische Konvertierung, die alles in eine Ganzzahl konvertiert (und auch für Strings). Die Funktion sumBy
ist eine Kombination aus map
und sum
, die zuerst alle Elemente auf einen numerischen Wert projiziert und dann die Ergebnisse summiert.
Technisch gibt es mindestens 3 verschiedene Ansätze:
1) Der in den anderen Antworten beschriebene Ansatz Seq.sum oder sumBy ist der kanonische Weg, die Summe in F # zu erhalten:
%Vor%2) Für Lehrzwecke kann es interessant sein zu sehen, wie genau man C # Verhalten in F # simulieren kann; Verwenden Sie beispielsweise einen Referenzzelltyp:
%Vor%3) Gleiche Idee wie 2), aber mit einem byref-Zeigertyp:
%Vor%