F # - приведение строки к <m>? - PullRequest
0 голосов
/ 11 марта 2011

Можно ли как-нибудь привести нормальное значение string к <m>, где m - это тип меры?

Ответы [ 3 ]

2 голосов
/ 11 марта 2011

Другой вариант, кроме подхода kvb, заключается в умножении необработанного значения с плавающей запятой на 1.0<m>:

let convert (s:string) =
    (float s) * 1.0<m>
2 голосов
/ 12 марта 2011

Чтобы добавить еще одну альтернативу, я бы написал:

let inline convertToMeters x : float<m> = unbox (box (float x));;

Вы можете использовать функцию для преобразования любого типа, который можно преобразовать в float, в тип float<m> (что хорошо, потому что она также работает с целыми числами и т. Д., Но не со всеми случайными типами, такими как System.Random ). Вы можете увидеть это из подписи типа:

val inline convertToMeters :
   ^a -> float<m> when  ^a : (static member op_Explicit :  ^a -> float)
2 голосов
/ 11 марта 2011

Я бы использовал что-то вроде

let convert (s:string) : float<m> = 
  float s 
  |> LanguagePrimitives.FloatWithMeasure
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...