【发布时间】:2014-10-08 01:51:57
【问题描述】:
是否可以通过 F# 中的度量单位标签创建可区分的联合类型?
我想写某事。像下面这样:
type DomainObject =
| Pixel of int
| ScaledPixel of int
| Centimeter of float
| Unset
let var1 = 10<px> // should equal: let var1 = Pixel(10)
let var2 = 0<us> // should equal: let var2 = Unset
let process sth =
match sth with
| Pixel(p) -> ...
| Centimeter(c) -> ...
// etc.
使用 NumericLiterals 这样的事情是可能的。但是只能使用少量的文字,例如Neil P. showed。
【问题讨论】:
-
简单的答案是:没有。
-
有没有其他方法可以在 F# 中创建自定义后缀运算符?
标签: f# units-of-measurement discriminated-union