F # Единицы измерения ... Есть ли пример ВРЕМЕНИ? - PullRequest
3 голосов
/ 28 августа 2009

Используется ли ВРЕМЯ в единицах измерения F #?

Ответы [ 2 ]

10 голосов
/ 28 августа 2009

есть стандартная единица СИ 'секунда', которую вы можете использовать для представления времени. Вам нужно будет сослаться на FSharp.PowerPack.dll, а затем использовать следующее:

open Microsoft.FSharp.Math

let minute = 60<SI.s>
let twoMinutes = minute * 2

Нет встроенных единиц для минут / часов и т. Д., Потому что они не являются стандартными единицами (и фактически только секунды умножаются на некоторое число). Однако вы также можете задать минуты, если хотите:

[<Measure>]
type mins =
  static member of_seconds(sec) = sec / 60<SI.s> * 1<mins>

// converting seconds to minutes 
let timeInMinuts = mins.of_seconds(twoMinutes)

Вы не можете использовать юниты со стандартным типом System.DateTime, если у вас возникли вопросы, но вы можете создать оболочку, которая отображает фактическое время (секунды / минуты) в нужных вам единицах:

open System

type DateTimeUnits(dt:DateTime) = 
  static member Now = new DateTimeUnits(DateTime.Now)
  member x.Second = dt.Second * 1<SI.s>
  member x.Minute = dt.Minute * 1<mins>
2 голосов
/ 28 августа 2009

Похоже, что время может быть в нем:

http://blogs.msdn.com/andrewkennedy/archive/2008/08/29/units-of-measure-in-f-part-one-introducing-units.aspx

но, даже если это не так, вы можете написать свои собственные единицы измерения.

Эта статья от MS также может быть полезна, в зависимости от того, какие единицы вы хотите. http://msdn.microsoft.com/en-us/library/dd233243%28VS.100%29.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...