撇开我们是否应该在无单位概念(例如角度)中使用度量单位,假设我已经在F#中定义了degree
和radian
单位。
type [<Measure>] degree =
static member ToRadians (d:float<degree>) : float<radian> = d * (Math.PI * 1.<radian>) / 180.0<degree>
and [<Measure>] radian =
static member ToDegrees (r:float<radian>) : float<degree> = r * 180.0<degree> / (Math.PI * 1.<radian>)
我可以相对容易地使用它们,例如:
4.0<degree> |> degree.ToRadians
看起来扩展成员可能会更加方便。那么我只需要这样说
let d = 4.0<degree>
let r = d.ToRadians()
但是我无法以显而易见的方式定义扩展成员
type float<degree> with
member degrees.ToRadians() = degree.ToRadians(degrees)
......这导致了以下错误
error FS0010: Unexpected identifier in type name. Expected infix operator, quote symbol or other token.
F#是否有对单位尺度上的扩展成员进行语法技巧的支持,还是该特性受支持?
floats
操作。 - John Palmer