我正在编写我的第一个F#程序,目的只是学习F#。
我想要的是提供这些日期的日期和属性列表(例如,DayOfWeek,DayOfMonth)。我已经设法提供日期列表,我知道.net框架为我提供了提取所有属性所需的一切,我无法弄清楚如何在我的列表中添加属性作为新列。 这是我到目前为止所做的:
type Span = Span of TimeSpan with
static member (+) (d:DateTime, Span wrapper) = d + wrapper //this is defining the + operator
static member Zero = Span(new TimeSpan(0L))
type Dates() =
let a = DateTime.Parse("01/12/2013")
let b =DateTime.Parse("02/12/2013")
let ts = TimeSpan.FromDays(1.0)
member this.Get() = [a .. Span(ts) .. b]
let mydates = new Dates()
mydates.Get()
当我运行该代码时,我得到一个DateTime值列表,列表中有2条记录。我现在可以这样做:
mydates.Get() |> List.map (fun x -> x.DayOfWeek);;
返回:
val it:DayOfWeek list = [Sunday;星期一]
或
mydates.Get() |> List.map (fun x -> x.DayOfYear);;
返回:
val it:int list = [335; 336]
这一切都很棒,但是我想做的是投射一个包含2个“列”的列表(如果列是正确的单词),这样我的输出就是(类似):
val it:int list = [(Sunday,335); (星期一,336)]
我希望这能解释我的目标。
感谢
杰米
答案 0 :(得分:1)
对于您的示例,解决方案很简单,让地图返回一个像这样的元组
mydates.Get() |> List.map (fun x -> x.DayOfWeek,x.DayOfYear);;