什麼我想是這樣的:如何投影(變換)的FileInfo的陣列,以字符串列表與fsharp
let getFiles path = (directoryInfo path).GetFiles().ToList
,但是這給了我的字符串FileInfos的列表,而不是名單。我如何將它投影到一個字符串列表?
THX提前
什麼我想是這樣的:如何投影(變換)的FileInfo的陣列,以字符串列表與fsharp
let getFiles path = (directoryInfo path).GetFiles().ToList
,但是這給了我的字符串FileInfos的列表,而不是名單。我如何將它投影到一個字符串列表?
THX提前
假設希望與每個相關聯的路徑文件,你可以這樣做:
let getFiles path = (directoryInfo path).GetFiles() |> Array.map (fun fi -> fi.FullName) |> List.ofSeq
注意這將創建一個F#列表,而不是System.Collections.Generic.List<string>
。如果你想創建的其中之一,你可以使用ResizeArray
:
let getFiles path = (DirectoryInfo path).GetFiles() |> Array.map (fun fi -> fi.FullName) |> (fun s -> ResizeArray<_>(s))
編輯:正如評論所指出的,由於GetFiles
返回一個數組,你可以使用Array.map
,避免轉換成一個列表/如果你不調整陣列不需要它。
李給出的答案是正確的,但這種情況很容易:
open System.IO
let filenames = Directory.EnumerateFiles path |> Seq.toList
Directory.EnumerateFiles回報string seq
,但如果你滿意的一個數組,你可以使用Directory.GetFiles代替。
如果你想返回一個簡單的數組(這是什麼'GetFiles'返回btw),你應該使用'|> Array.map(fun ...)'。 – Tarmil
李,你救了我的命,thx –