我对函数式编程还是个新手,所以如果我不知道如何做某事,我会恢复到程序风格。我找到了一种方法来避免必须转换为列表,但我仍然想知道如何进行。
这是我将二维数组转换为列表的尝试。
let board = Array2.init 10 20 (fun i j -> pull(i, j))
let mutable pieces = []
board
|> Array2.mapi (fun i j a -> transform(i, j, a))
|> Array2.iter (fun a -> (pieces <- a :: pieces))
最佳答案
显然在 .Net 中,多维数组是 IEnumerable(非泛型),因此这是有效的:
let a2 = Array2.init 2 3 (fun x y -> (x+1)*(y+1))
let l = a2 |> Seq.cast<int> |> Seq.fold (fun l n -> n :: l) []
printfn "%A" l
编辑:正如诺多林在评论中指出的那样,这更好:
let l = a2 |> Seq.cast<int> |> Seq.toList
关于list - F# 将 Array2 转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/648193/