我正在尝试使用FAKE来构建位于多个子目录中的F#文件。 filesInDirMatching来自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数组,我猜),这是所有类型的工作。是否可以将二维数组缩减为一维数组?或者有更好的方法吗?
答案 0 :(得分:4)
我猜二维数组是指一个数组数组(锯齿状数组)。
如果有,请将Array.map
替换为Array.collect
答案 1 :(得分:3)
您可以使用Array.concat
将数组展平为单个维度:
let all = allDirs
|> Array.map(fun d -> filesInDirMatching "Example.fs" d)
|> Array.concat