现在我可以将单个value or tubles添加到管道中,我的下一个问题是我可以添加列表/数组:
filesUnderFolder
|> Seq.map FileInfo
我的问题是我无法用管道处理这个|>,或者我可以吗?
Assembly.GetExecutingAssembly.GetFiles()
|>Array.map (fun file -> file.ReadAllText().Contains(keyword))
答案 0 :(得分:3)
我不明白你的问题是什么,但正确的版本是:
open System.Reflection
open System.IO
Assembly.GetExecutingAssembly().GetFiles()
|> Seq.map (fun file -> new StreamReader(file))
|> Seq.map (fun file -> file.ReadToEnd().Contains(keyword))
|> Seq.iter(printfn "%s")
首先,你需要GetExecutingAssembly,你需要它的结果。所以()
。
第二个GetFiles()
,返回Stream
数组,而不是FileInfo
,如您所料。因此,您必须将Stream
包裹到StreamWriter
。
多数民众赞成。
答案 1 :(得分:2)
看看你的评论,你试图这样做吗?
Assembly.GetExecutingAssembly().GetFiles()
|> Seq.map (fun file ->
let stream = new StreamReader(file)
file, stream.ReadToEnd().Contains(keyword))
|> Seq.filter snd
|> Seq.map fst
|> Seq.iter (fun file -> printfn "%s" file.Name)
势在必行的风格可以更清洁。
for file in Assembly.GetExecutingAssembly().GetFiles() do
let stream = new StreamReader(file)
if stream.ReadToEnd().Contains(keyword) then
printfn "%s" file.Name