假设我定义了一个计量单位:
[<Measure>] type Blob
我想要一种类型,它以每秒 Blob 的值作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F# 对此抛出了一个摇摆不定的问题——“double 不期望任何类型参数,但这里给出了 1 个类型参数”
我明白这个消息。我原以为我正在尝试做的事情很明显,尽管我承认语法可能是可验证的错误。问题是,我如何在代码中表达这种关系?
假设我定义了一个计量单位:
[<Measure>] type Blob
我想要一种类型,它以每秒 Blob 的值作为构造函数参数:
type Something(flowRate:double<Blob/s>) = ...
F# 对此抛出了一个摇摆不定的问题——“double 不期望任何类型参数,但这里给出了 1 个类型参数”
我明白这个消息。我原以为我正在尝试做的事情很明显,尽管我承认语法可能是可验证的错误。问题是,我如何在代码中表达这种关系?
正如消息(有点)所表明的那样,双打不是通用的。试试float<Blob/s>
吧。这有点奇怪,因为float
它是 type 的类型同义词double
。然而,类型float<[<Measure>]'t>
在某些方面是它自己的独立类型。single
vs. float32
、int32
vs.int
和int8
vs.也会出现类似的问题byte
。 规范的第 9.7 节部分涵盖了此信息。
这尤其令人困惑,因为您无法定义自己的类型,这些类型仅在度量值上有所不同:
type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T