Ono*_*cci 3 f# overloading measures
考虑以下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>
Run Code Online (Sandbox Code Playgroud)
(我意识到我需要检查originalSize为0,但这并不是真正与这个问题密切相关).
我想要的是重载此功能来处理每英寸的英寸和点数.我不认为有任何方法可以超载计量单位,但我只是想我会看到是否有人对此有任何建议.
我知道我可以这样做:
let scaleCalculation (finalSize:float) (originalSize:float) =
finalSize/originalSize * 100.0<percentage>
Run Code Online (Sandbox Code Playgroud)
但后来我失去了对finalSize和originalSize测量的检查.我只想确保finalSize和originalSize的度量相同.
有什么建议,想法?
let scaleCalculation (finalSize:float<'u>) (originalSize:float<'u>) =
finalSize/originalSize * 100.0<percentage>
Run Code Online (Sandbox Code Playgroud)