Creating a custom iota()

realhet real_het at hotmail.com
Thu May 12 11:57:54 UTC 2022


Hello,

I have my own DateTime struct.
It has opCmp() and opBinary(), I can do arithmetic with this 
custom DateTime and the amazing time units of the **quantities** 
package.

Now I'm about mo make iterations in a DateTime range:

     const
       st = DateTime(UTC, "22.1.1 8:30").utcDayStart,
       en = DateTime(UTC, "22.3.5 19:56").max(now).utcDayStart + 
(100.0/64)*nano(second);

     //this works
     for(auto d = cast()st; d < en; d += day) writeln(d);

     //this would be nicer, but not works
     iota(st, en, day).each!writeln;

My question is, is there a way to 'extend' the functionality of 
the std.iota() function or it is better to come up with a unique 
name for this special 'iota' functionality?

I know that if I'm going to patch iota in my module, I have to 
make ALL the iota() variants plus my special iota variant visible 
in that module scope. Is this a good practice, or is there a 
better way?

Or maybe put it inside a DateTimeRange struct, and implement the 
std range functionality?





More information about the Digitalmars-d-learn mailing list