考虑以下 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 的度量相同。
任何建议,想法?
最佳答案
let scaleCalculation (finalSize:float<'u>) (originalSize:float<'u>) =
finalSize/originalSize * 100.0<percentage>
Units of Measure in F#: Part Four, Parameterized Types
关于f# - F# 措施的重载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6701140/