2010-11-10 71 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

相關問題