Я прочитал довольно много ресурсов о Единицах измерения (включая хороший Microsoft Doc и f # для развлечения и прибыли), но я все еще не могу заставить свой код работать.
[<Measure>] type USD
[<Measure>] type JPY
[<Measure>] type EUR
type FxUnit<[<Measure>] 'u,[<Measure>] 'v> = {UnitRate : float<'u/'v>}
let getFx1 u =
match u with
| "USD" -> {UnitRate = 1.0<USD/USD>}
| "EUR" -> {UnitRate = 1.0<USD/EUR>}
Таким образом, я получаюошибка под:
1.0<USD/EUR>
Я пробовал это:
let getFx1 u : (float<'u>) =
let getFx1 u : (float<'u/'v>) =
без особого успеха.Кажется, что при совпадении я не могу вернуть какой-то тип FxUnit с другим UoM.
Есть идеи, как я мог это исправить?
спасибо.