我想为值而不是 int 创建类似于枚举的 F# 记录类型。例如,如果我有工会:
type BologneseIngredients = | Spaghetti
| Tomatoes
| MincedBeef
| GrandmasSecretIngredient
我知道意大利面总是30厘米长,西红柿总是红色的。我能做的是有一个“获取元数据”功能:
let getMetadata = function
| Spaghetti -> { length: 30.0<cm> }
| Tomatoes -> { colour: Color.Red }
| _ -> { }
但我真的很想把联合的定义和数据放在一起。有没有很好的方法来做到这一点?