2010-11-20 35 views
2

我有一個方法,名爲RateOfChange,它採用兩個相隔一秒的值並返回結果。度量單位 - 重複使用不同單位的方法

對於兩個位置,它返回速度,對於兩個速度,它返回加速,它返回焦耳兩個能量值/秒等

這在物理上是可能的,但測量單位不要讓我做 - 在第一次使用該方法contrained到指定類型:

let RateOfChangeWithTime (value1, value2) = (value2 - value1)/1.0<SI.s> 

let velocity = RateOfChangeWithTime(2.0<SI.m>, 1.0<SI.m>) 
let acceleration = RateOfChangeWithTime(3.0<SI.m/SI.s>, 2.0<SI.m/SI.s>) 

velocity =則此方法被限制爲float<SI.m> -> float<SI.m>/float<SI.s>,這當然是正確的速度的線路,但線路acceleration = ...然後編譯不通,因爲它傳遞的是float<SI.m/SI.s>哪個方法沒有指望。

我希望RateOfChangeWithTime對傳入的類型不變,但只是返回已除以秒的度量單位。

這似乎更符合真實的生活情況,這可能嗎? (我想一個更復雜的情況下做到這一點 - 在這裏看到(http://taumuon-jabuka.blogspot.com/2010/11/f-units-of-measure-with-reactive.html

回答

6
let RateOfChangeWithTime (value1: float<_>, value2: float<_>) = (value2 - value1)/1.0<SI.s> 

let velocity = RateOfChangeWithTime(2.0<SI.m>, 1.0<SI.m>) 
let acceleration = RateOfChangeWithTime(3.0<SI.m/SI.s>, 2.0<SI.m/SI.s>) 
+0

令人驚歎,非常感謝您的答覆;-) – 2010-11-21 11:45:14