在F#中将(string * int)[]写入文本文件

时间:2018-12-05 13:36:22

标签: f#

我对F#相当陌生,这是我的第一篇文章,所以希望我能对我的问题提供足够的描述。 就像标题说的那样,我需要将(string * int) []函数写入文本文件。我知道System.IO.File.WriteAllText (string, string),但是我有办法写文本文件而不先转换为string吗? 现在,我有一种单词计数,该单词计数与计数的单词和单词出现的次数进行排序。像这样:

[|("and", 130); ("he", 128); ("that", 103); ("was", 80); ...|]

文本文件的文件目录可以只是我项目中.fsx文件的位置。

1 个答案:

答案 0 :(得分:2)

您确实需要以某种方式转换数组。这通常是一件好事,因为它会迫使您控制文件的格式。当然,您可以使用某种类型的序列化程序,但是对于这样一个简单的任务来说可能有点过多。

我可能会做这样的事情:

open System.IO
let words = [|("and", 130); ("he", 128); ("that", 103); ("was", 80) |]
let lines = words |> Array.map (fun (w, c) -> sprintf "%s;%i" w c)
File.WriteAllLines(__SOURCE_DIRECTORY__ + @"\file.csv", lines)