有兩種問題 - 首先,您需要指定要在列表元素之間使用的時間間隔。這將是一個TimeSpan
,但它沒有靜態的Zero
成員。
type TimeSpanW = { span : TimeSpan } with
static member (+) (d:DateTime, wrapper) = d + wrapper.span
static member Zero = { span = new TimeSpan(0L) }
您:
這個約束是由要求「步」類型具有靜態(+)
和Zero
成員
您可以定義自己的結構,但是它支持所需的操作skip range operator要求可以這樣做:
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]
來源
2012-06-24 10:04:22
Lee
工程很漂亮...有沒有鏈接解釋發生了什麼?爲什麼零是必需的?還有(+)運算符。 –
@KnowsNotMuch - 這是「跳過範圍」操作符所要求的 - 我已通過鏈接更新了答案。 – Lee
@KnowsNotMuch - 實際發生的事情 - 步驟必須從0開始,然後增加 - 如果您查看簽名,則步驟不必具有與端點相同的類型。 –