Tom*_*m W 6 f# constructor units-of-measurement
假设我已经定义了一个度量单位:
[<Measure>] type Blob
我想要一个类型,以每秒Blobs的值作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F#对此抛出一个摇摆不定 - "double不期望任何类型的参数,但这里给出了1个类型的参数"
我理解这个消息.我曾经认为我试图做的很明显,但我承认语法可能是错误的.问题是,我如何在代码中表达这种关系?
正如消息(类型)所示,双打不是度量通用的.试试吧float<Blob/s>.这有点奇怪,因为float它是类型的类型同义词double.但是,类型float<[<Measure>]'t>在某些方面是它自己的单独类型.singlevs. float32,int32vs int.和int8vs. 会出现类似的问题byte. 规范的第9.7节部分涵盖了这些信息.
这是特别令人困惑的,因为你无法定义自己的类型,只有它们的度量不同:
type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T
Run Code Online (Sandbox Code Playgroud)