저는 F #으로 작업하기 시작했으며 전형적인 idoms와 효과적인 사고 방식 및 작업 방식을 이해하려고합니다.F #의 파일 변환
작업은 탭으로 구분 된 파일을 쉼표로 구분 된 파일로 간단히 변환하는 작업입니다. 나는 다음과 같은 코드를 루프로 시작
let line = "@ES# 01/31/2006 13:31:00 1303.00 1303.00 1302.00 1302.00 2514 0"
: 같은 일반적인 입력 라인 모양 그때 하나의 Regex.Replace의 조작 스플릿/CONCAT 쌍을 교체
// 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)
() :
for line in File.ReadLines(inFile) do
let transformedLine = Regex.Replace(line, "\t",",")
outFile.WriteLine(transformedLine)
그리고 지금, 마지막으로, 파이프 라인과 루프 교체 한 :
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
모든 버전이 작동하지만 최종 버전은 나에게 가장 직관적 인 것처럼 보입니다. 더 숙련 된 F # 프로그래머가이 작업을 수행하는 방법은 무엇입니까?
나는 당신이 그것을했던 것과 같은 방식으로 할 것입니다. –
제 3의 버전의 마지막 줄에 익명의 함수를 남겨두고 이것을 할 것입니다 :'|> Seq.iter outFile.WriteLine' –
그건 아주 좋은 것입니다. ** 회상 **, 명백한] 단순화. 감사! – akucheck