因此,还有一个歧视工会的问题:——)
假设我有这样一个受歧视的工会:-
type Foo =
| A of string
| B of int
| C of char
| D of string
我希望能够使用函数appendStringToFoo,如下所示:-
let someVal = A("hi")
let anotherVal = D("yo")
let hiya = someVal |> appendStringToFoo "ya"
let yoyo = anotherVal |> appendStringToFoo "yo"
其中hiya=A(“hiya”)
显然,我还将继续编写单独的函数appendIntToFoo、appendCharToFoo等。
let appendStringToFoo str fooValue =
fooValue(fooValue.Value + str)
这似乎是不可能的。
我
let appendStringToFoo str fooValue =
match fooValue with
| A(originalStr) -> A(originalStr + str)
| D(originalStr) -> D(originalStr + str)
因为这意味着每次添加新的工会案例时,我都必须重新编写此代码。
有什么想法吗?