方法重载与度量单位

3

我正在尝试使用F#创建接受带有单位角度的cos重载。

这是我的代码:

[<Measure>] type rad
[<Measure>] type deg
let toRad(x:float<deg>) =
    (float x) * 3.14159265 / 180.0
    |> LanguagePrimitives.FloatWithMeasure<rad>
let cos (angle: float<rad>) = cos(float angle)
let cos (angle: float<deg>) = cos(toRad angle) // get duplicate definition of cos here

编译器在最后一行报告cos的重复定义问题。

有什么问题出现了吗?(如果有的话) - GS - Apologise to Monica
1个回答

5

度量类型被删除了(请参见规范),因此您实际上有两个定义的cos(angle: float),这会导致错误。

您可以为两种可能性创建一个联合类型。

type Angle = Degrees of float | Radians of float

或者给这些功能取不同的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接