gpt4 book ai didi

F#:将序列序列展平为单个Seq

转载 作者:行者123 更新时间:2023-12-03 16:41:11 25 4
gpt4 key购买 nike

我正在尝试构建一个包含多个文件内容的序列,以便可以对其进行排序,然后传递给图形组件。但是,我一直试图将每个文件的内容折叠在一起。下面的伪代码不会编译,但希望能显示出我想要达到的目的。

任何帮助,不胜感激。

open System.IO 

let FileEnumerator filename = seq {
use sr = System.IO.File.OpenText(filename)
while not sr.EndOfStream do
let line = sr.ReadLine()
yield line
}

let files = Directory.EnumerateFiles(@"D:\test_Data\","*.csv",SearchOption.AllDirectories)

let res =
files
|> Seq.fold(fun x item ->
let lines = FileEnumerator(item)
let sq = Seq.concat x ; lines
sq
) seq<string>

printfn "%A" res

最佳答案

本质上,您正在尝试重新实现Files.Readlines,它将文件内容返回为seq<string>。然后可以将其与Seq.concat串联:

let res = Directory.EnumerateFiles(@"D:\test_Data","*.csv",SearchOption.AllDirectories)
|> Seq.map File.ReadLines
|> Seq.concat

关于F#:将序列序列展平为单个Seq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com