假设我已经定义了一个度量单位:
[<Measure>] type Blob
我想要一个以Blobs /秒为值的类型作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F#在这上面摇摆不定 - “double不期望任何类型的参数,但这里给出了1种类型的参数”
我理解这条消息。我曾经认为我试图做的很明显,但我承认语法可能是错误的。问题是,我如何在代码中表达这种关系?
答案 0 :(得分:8)
正如消息(类型)所示,双打不是度量通用的。请尝试使用float<Blob/s>
。这有点奇怪,因为float
是类型double
的类型同义词。但是,类型float<[<Measure>]'t>
在某些方面是它自己的单独类型。 single
与float32
,int32
与int
以及int8
与byte
的问题类似。 Section 9.7 of the spec部分涵盖了这些信息。
这是特别令人困惑的,因为你无法定义自己的类型,这些类型只有它们的衡量标准不同:
type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T