首先,对于标题表达不清我深感抱歉——我不了解足够的F#知识来更好地描述这个问题。
考虑这个简单的DU:
type Money =
| USD of decimal
| GBP of decimal
| EUR of decimal
static member (+) (first: Money, second: Money) =
match first, second with
| USD(x), USD(y) -> USD(x + y)
| GBP(x), GBP(y) -> GBP(x + y)
| EUR(x), EUR(y) -> EUR(x + y)
| _ -> failwith "Different currencies"
我在表示不同货币的金额,并重载了加号(+)运算符,以便可以安全地执行 Money + Money。但是,如果我有许多不同的货币,那么匹配相关数据的语句将变得很复杂。有没有什么方法可以像下面这样表达:
match first, second with
| _(x), _(y) -> _(x + y)
还有其他实现相同结果的方法吗?由于文档 这里中描述的限制,我已经考虑并放弃了度量单位。