gpt4 book ai didi

F#生成日期序列/数组

转载 作者:行者123 更新时间:2023-12-04 09:06:58 25 4
gpt4 key购买 nike

在F#中,我可以轻松完成

let a = [1 .. 10];;

那我为什么不能
let a = DateTime.Parse("01/01/2012")
let b = DateTime.Parse("01/01/2020")


let dateList = [a .. b]

它给出了一个错误 Type constraint mismatch. The type DateTime is not compatible with type TimeSpan

最佳答案

有两个问题-首先,您需要指定要在列表元素之间使用的间隔。这将是TimeSpan,但是它没有静态的Zero成员。

skip range operator要求此约束,后者要求“step”类型具有静态(+)Zero成员

您可以定义自己的结构来支持所需的操作,但是:

type TimeSpanW = { span : TimeSpan } with
static member (+) (d:DateTime, wrapper) = d + wrapper.span
static member Zero = { span = new TimeSpan(0L) }

然后,您可以执行以下操作:
let ts = new TimeSpan(...)
let dateList = [a .. {span = ts} .. b]

编辑:这是使用区分联合的另一种语法,您可能更喜欢:
type Span = Span of TimeSpan with
static member (+) (d:DateTime, Span wrapper) = d + wrapper
static member Zero = Span(new TimeSpan(0L))

let ts = TimeSpan.FromDays(1.0)
let dateList = [a .. Span(ts) .. b]

关于F#生成日期序列/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11176471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com