次の 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 の測定値が同じであることを確認したいだけです。
提案、考えはありますか?