您知道要解开单个联合类型的值,您必须这样做:

type Foo = Foo of int*string

let processFoo foo =
    let (Foo (t1,t2)) = foo
    printfn "%A %A" t1 t2

但我的问题是:是否有办法为列表做到这一点?:
let processFooList (foolist:Foo list )  =
    let ??? = foolist // how to get a int*string list
    ...

谢谢。

最佳答案

最好的方法是使用一个与 List.map 结合的函数,就像这样

let processFooList (foolist:Foo list )  = foolist |> List.map (function |Foo(t1,t2)->t1,t2)

关于f# - 如何在 f# 中的列表中解开联合值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20437188/

10-10 13:18