これで、単一の値またはチューブルをパイプラインに追加できるようになりました。次の質問は、リスト/配列を追加できるかどうかです。
filesUnderFolder
|> Seq.map FileInfo
私の問題は、パイプライン |> でこれを処理できないことです。
Assembly.GetExecutingAssembly.GetFiles()
|>Array.map (fun file -> file.ReadAllText().Contains(keyword))
あなたの質問が何であるかわかりませんが、正しいバージョンは次のとおりです。
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
それでおしまい。
あなたのコメントを見て、あなたはこれをやろうとしていますか?
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