2010-11-10 39 views
6

假设我已经定义的计量单位:为什么我不能将单位参数传递给F#类型?

[<Measure>] type Blob

我想要一个类型每秒发生在斑点的值作为构造器参数:

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

F#抛出一个摇摆不定 - “double不指望任何类型的参数,但这里给出了1个类型参数”

我明白这条消息。我认为这显然是我想要做的,尽管我承认语法可能是可验证的错误。问题是,我如何在代码中表达这种关系?

回答

8

由于消息(排序)指示,双打不是度量通用的。改为尝试float<Blob/s>。这有点奇怪,因为floatdouble类型的同义词。但是,float<[<Measure>]'t>类型在某些方面是它自己独立的类型。 singlefloat32,int32intint8byte发生类似的问题。 Section 9.7 of the spec部分涵盖此信息。

type T = class end 
type T<[<Measure>]'t> = class end //' Duplicate definition of type T 
+0

辉煌,感谢:

,因为你不能定义自己类型的区别仅仅在于它们的度量元数这是特别令人困惑。我假定编译器试图告诉我“参数类型声明不需要单位”,即单位是文字的末尾,而不是类型。这使它更简单。 – 2010-11-10 19:40:12

相关问题