我正在尝试打印给定目录中所有文件的总行数.但是,我收到一个错误Type mismatch. Expecting IEnumerable<string> -> 'a but given a 'b list -> 'c list.我不确定为什么会这样.这是我的代码:
let printLengths path =
let files = Directory.EnumerateFiles(path)
let fileLengths = files |> List.map (fun dir -> Seq.length(File.ReadLines(dir)))
printfn "%i" (List.sum fileLengths)
Run Code Online (Sandbox Code Playgroud)
System.IO.Directory.EnumerateFiles返回一个序列IEnumerable<'T>,而不是一个列表.使用Seq.map和Seq.sum映射或求和序列.
或者,对于更短的解决方案,请使用Seq.sumBy:
let printTotalNumberOfLines path =
Directory.EnumerateFiles path
|> Seq.sumBy (File.ReadAllLines >> Seq.length)
|> printfn "%i"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |