2011-07-14 72 views
3

考慮下面的F#代碼:重載F#辦法

[<Measure>] type pixel 
[<Measure>] type inch 
[<Measure>] type dot 
[<Measure>] type percentage 

let scaleCalculation (finalSize:float<pixel>) (originalSize:float<pixel>) = 
    finalSize/originalSize * 100.0<percentage> 

(我知道我需要檢查originalSize爲0,但是這不是真的傑曼對這個問題)。

我想要的是超載此功能來處理英寸和每英寸點數。我認爲在度量單位上沒有任何超載的方法,但我只是想我會看到有沒有人對此有任何建議。

我知道我可以做到這一點:

let scaleCalculation (finalSize:float) (originalSize:float) = 
     finalSize/originalSize * 100.0<percentage> 

但後來我失去finalSize和originalSize的措施檢查。我只是想確保finalSize和originalSize的度量是相同的。

任何建議,想法?

回答

8
let scaleCalculation (finalSize:float<'u>) (originalSize:float<'u>) = 
    finalSize/originalSize * 100.0<percentage> 

Units of Measure in F#: Part Four, Parameterized Types

+0

絕對超值。我想我需要用某種方法來使用泛型,但還沒有完全嘗試代碼。感謝Gradbot。嘿,你還在Google+上嗎? –

+0

我希望我能給你提供另一個鏈接的upvote。 :-) –

+0

你可以在google +上找到我,作爲我在gmail.com的SO用戶名 – gradbot