假设我有以下 DU:
type Something =
| A of int
| B of string * int
现在我在这样的函数中使用它:
let UseSomething = function
| A(i) -> DoSomethingWithA i
| B(s, i) -> DoSomethingWithB s i
这行得通,但我必须解构 DU 才能将其传递给 DoSomethingWith* 函数。尝试将 DoSomethingWithA 定义为:
let DoSomethingWithA (a: Something.A) = ....
但编译器抱怨没有定义类型 A。
想要将参数限制为Something.A,而不仅仅是任何旧的int,这似乎完全符合F#的哲学,所以我只是走错了路吗?