假设我有一个定义如下的F#区分联合:
type Union<'T> = | A of 'T | B | C例如,如果我有一个这样的B,其中'T是int,我如何将它转换为另一个'T是string的B?我有一个与此类似的联合,但有更多的情况,目前我的模式匹配如下:
let convert u =
match u with
| A(x) -> // some fancy logic here
| B -> B
| C -> C发布于 2014-01-21 21:42:25
此函数通常称为map。第一个参数是用于转换内部值的函数(a -> b):
let map f = function
| A(x) -> (A (f x))
| B -> B
| C -> C您可以像这样使用它:
let stringUnion = (A(123)) |> map (fun i -> i.ToString())https://stackoverflow.com/questions/21259766
复制相似问题