Получить список файлов в подкаталогах для FAKE
Я пытаюсь использовать FAKE для создания файлов F#, которые расположены в нескольких подкаталогах. Файлы InDirMatching от FAKE.
#r @"packages/FAKE/tools/FakeLib.dll"
open System.IO
open Fake
open Fake.FileSystemHelper
open Fake.FscHelper
let allDirs = DirectoryInfo(__SOURCE_DIRECTORY__).GetDirectories "*"
let all = allDirs |> Array.map(fun d -> filesInDirMatching "Example.fs" d)
Это все виды работ, за исключением того, что в последней строке создается двухмерный массив (так как я полагаю, что filesInDirMatching создает новый массив FileDirectory). Можно ли уменьшить двумерный массив в одномерный массив? Или есть лучший способ сделать это?
2 ответа
Решение
Я предполагаю, что под двумерным массивом вы подразумеваете массив массивов (зубчатый массив).
Если это так, просто замените Array.map
с Array.collect
Вы можете сгладить массив в одном измерении с Array.concat
:
let all = allDirs
|> Array.map(fun d -> filesInDirMatching "Example.fs" d)
|> Array.concat