6

假设我定义了一个计量单位:

[<Measure>] type Blob

我想要一种类型,它以每秒 Blob 的值作为构造函数参数:

type Something(flowRate:double<Blob/s>) = ...

F# 对此抛出了一个摇摆不定的问题——“double 不期望任何类型参数,但这里给出了 1 个类型参数”

我明白这个消息。我原以为我正在尝试做的事情很明显,尽管我承认语法可能是可验证的错误。问题是,我如何在代码中表达这种关系?

4

1 回答 1

8

正如消息(有点)所表明的那样,双打不是通用的。试试float<Blob/s>吧。这有点奇怪,因为float它是 type 的类型同义词double。然而,类型float<[<Measure>]'t>在某些方面是它自己的独立类型。singlevs. float32int32vs.intint8vs.也会出现类似的问题byte规范的第 9.7 节部分涵盖了此信息。

这尤其令人困惑,因为您无法定义自己的类型,这些类型仅在度量值上有所不同:

type T = class end
type T<[<Measure>]'t> = class end //' Duplicate definition of type T
于 2010-11-10T19:18:58.403 回答