как определить меру как кратную другой меры - PullRequest
0 голосов
/ 16 января 2019

Я пытаюсь определить Isaron как 43.2 раз Egg, но получаю исключение:

[<Measure>] type Egg
[<Measure>] type Isaron = (43.2)*(Egg)

ошибка FS0618: недопустимый литерал в типе

Как правильно определить эту меру?

1 Ответ

0 голосов
/ 16 января 2019

Вы не определяете отношение в типе меры, вы определяете его в функциях, которые преобразуются в и из типов:

[<Measure>] type Egg
[<Measure>] type Isaron
let toEgg (i : float<Isaron>) = i / 43.2<Isaron> * 1.0<Egg>
let toIsaron (e : float<Egg>) = e / 1.0<Egg> * 43.2<Isaron>

На сайте Скотта Влашина есть еще один пример того, как сделать это в футах и ​​дюймах, создав постоянный коэффициент преобразования:

[<Measure>] type Egg
[<Measure>] type Isaron
let isaronsPerEgg = 43.2<Isaron/Egg>
let toEgg (i : float<Isaron>) = i / isaronsPerEgg
let toIsaron (e : float<Egg>) = e * isaronsPerEgg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...