2010-12-05 34 views
4

我開始學習如何在F#中使用度量單位,但是我還沒有找到這個簡單問題的答案。計算後如何打印結果單位?我知道FSI會打印它們,所以它們應該以某種方式提供。如何使用F#中的度量單位打印生成的單位?

例如:

[<Measure>] type m;; 

[<Measure>] type s;; 

let d = 10<m>;; 
val d : int<m> = 10 

let t = 2<s>;; 
val t : int<s> = 2 

我想要做這樣的事:提前

回答

6

printfn "Results: %A %A" (d/t) (UOM (d/t));; 
"Results: 5 m/s" 

感謝不幸的是,這是不可能的。

度量單位僅在編譯時存在。當你編譯程序時,它們將被渲染(因爲.NET沒有任何方式來表示單元類型)。這意味着在運行時,計算結果將僅爲float。我不認爲除了在代碼中將單位寫入字符串之外沒有其他方法...

前段時間有一個相關問題。它有更多的細節,也解釋了爲什麼你不能使用反射來獲取有關單位的信息。