hay dos problemas: en primer lugar, debe especificar el intervalo que desea utilizar entre los elementos de la lista. Esto sería un TimeSpan
, sin embargo, no tiene un miembro estático Zero
.
Esta restricción es requerida por el skip range operator que requiere el tipo 'paso' para tener estáticas (+)
y Zero
miembros
Puede definir su propia estructura que soporta las operaciones necesarias sin embargo:
type TimeSpanW = { span : TimeSpan } with
static member (+) (d:DateTime, wrapper) = d + wrapper.span
static member Zero = { span = new TimeSpan(0L) }
Usted a continuación, puede hacer:
let ts = new TimeSpan(...)
let dateList = [a .. {span = ts} .. b]
Editar: Aquí hay una sintaxis alternativa utilizando uniones discrimina que es posible que prefiera:
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]
Funciona muy bien ... ¿Hay un enlace que explique qué está pasando? ¿Por qué se requiere cero? También ese operador (+). –
@KnowsNotMuch - Esto es requerido por el operador de "rango de omisión" - He actualizado la respuesta con un enlace. – Lee
@KnowsNotMuch - lo que está sucediendo en realidad - el paso tiene que comenzar en 0 y luego aumentar - si observa la firma, el paso no tiene que tener el mismo tipo que los puntos finales. –