Ich fange gerade an, mit F # zu arbeiten und versuche typische Idome und effektive Denk- und Arbeitsweisen zu verstehen.Datei transformieren in F #
Die vorliegende Aufgabe besteht aus einer einfachen Umwandlung einer durch Tabulatoren getrennten Datei in eine durch Kommas getrennte Datei. Eine typische Eingabezeile wird wie folgt aussehen:
let line = "@ES# 01/31/2006 13:31:00 1303.00 1303.00 1302.00 1302.00 2514 0"
ich mit Looping Code wie folgt begann:
// inFile and outFile defined in preceding code not shown here
for line in File.ReadLines(inFile) do
let typicalArray = line.Split '\t'
let transformedLine = typicalArray |> String.concat ","
outFile.WriteLine(transformedLine)
I ersetzt dann das Split/concat Paar von Operationen mit einem einzigen Regex.Replace():
for line in File.ReadLines(inFile) do
let transformedLine = Regex.Replace(line, "\t",",")
outFile.WriteLine(transformedLine)
Und jetzt haben schließlich die Schleife mit einer Pipeline ersetzt:
File.ReadLines(inFile)
|> Seq.map (fun x -> Regex.Replace(x, "\t", ","))
|> Seq.iter (fun y -> outFile.WriteLine(y))
// other housekeeping code below here not shown
Während alle Versionen funktionieren, scheint mir die finale Version am intuitivsten zu sein. Würde ein erfahrener F # -Programmierer diese Aufgabe erfüllen?
ich tun würde, genauso, wie Sie es haben –
ich in der letzten Zeile des dritten Version der anonymen Funktion auslassen würde und tun nur das: '|> Seq.iter outFile.WriteLine' –
Das ist ein sehr schönes [ist und, ** im Rückblick **, offensichtlich] Vereinfachung. Vielen Dank! – akucheck