如何在F#中遍历String [] []

布格磁铁

上下文:Microsoft Visual Studio 2015社区;F#

我每天学习F#大约1/2。迷恋mlite的一年来对如何进行函数式编程的想法确实含糊不清

以下脚本遍历文件夹树并提取日志文件。这些文件的条目由分隔,~并且那里可能有一个或多个。

open System
open System.IO

let files = 
    System.IO.Directory.GetFiles("C:\\scratch\\snapshots\\", "*.log", SearchOption.AllDirectories)

let readFile (file: string) = 
    //Console.WriteLine(file)
    let text = File.ReadAllText(file) 
    text

let dataLines (line: string) = 
    line.Split('~')

let data = 
    files |> Array.map readFile |> Array.map dataLines

因此,此时data包含a,String[][]而我不知所措,想出如何将其转换为aString[]的想法是,我想将所有对数转换为一个长向量,以便我可以对on进行其他一些转换。它。例如,每条日志行都以日期时间开头,因此将其全部变成一个长列表,然后我就可以对日期时间进行排序。

从这里到哪里?

古斯

如评论中所述,您可以使用Array.concat

files |> Array.map readFile |> Array.map dataLines |> Array.concat

现在进行一些重构,两个映射的组成等同于两个函数的组成的映射。

files |> Array.map (readFile >> dataLines) |> Array.concat

最后map >> concat等于collect因此,您的代码变为:

files |> Array.collect (readFile >> dataLines)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章