我试图将Isaron
定义为43.2
的{{1}}倍,但是我遇到一个例外:
Egg
错误FS0618:类型无效的文字
如何正确定义此度量?
答案 0 :(得分:4)
您未在度量类型中定义关系,而是在可与类型进行相互转换的函数中进行定义:
[<Measure>] type Egg
[<Measure>] type Isaron
let toEgg (i : float<Isaron>) = i / 43.2<Isaron> * 1.0<Egg>
let toIsaron (e : float<Egg>) = e / 1.0<Egg> * 43.2<Isaron>
Scott Wlaschin's site的另一个示例是如何通过创建恒定的转换因子来以英尺和英寸为单位进行操作:
[<Measure>] type Egg
[<Measure>] type Isaron
let isaronsPerEgg = 43.2<Isaron/Egg>
let toEgg (i : float<Isaron>) = i / isaronsPerEgg
let toIsaron (e : float<Egg>) = e * isaronsPerEgg