如何将一个度量定义为另一个度量的倍数

时间:2019-01-16 00:34:36

标签: f#

我试图将Isaron定义为43.2的{​​{1}}倍,但是我遇到一个例外:

Egg
  

错误FS0618:类型无效的文字

如何正确定义此度量?

1 个答案:

答案 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