考虑以下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的度量相同。
有什么建议,想法吗?
答案 0 :(得分:8)
let scaleCalculation (finalSize:float<'u>) (originalSize:float<'u>) =
finalSize/originalSize * 100.0<percentage>