On 9/8/21 5:55 AM, Chris Piker wrote:
On Wednesday, 8 September 2021 at 08:39:53 UTC, jfondren wrote:
so I'd look at a std.sumtype of them first:

Wow, this forum is like a CS department with infinite office hours!

Interesting.  I presume that the big win for using std.sumtype over a class set is value semantics instead of reference semantics?

So out of curiosity, say each structure implemented a function to provide the desired broken-down-time, would the following "virtual function" style call work?

```d
import std.sumtype;
struct BDTime { int y, int m, int d, int h, int m, double s };

struct ISO8601 { BDTime bdTime(){ ... }  }
struct FloatEpoch { BDTime bdTime(){ ... } }
struct DoubleEpoch { BDTime bdTime(){ ... } }
struct LongEpoch { BDTime bdTime(){ ... }  }
alias Time = SumType!(ISO8601, FloatEpoch, DoubleEpoch, LongEpoch);

void main() {
     import std.stdio : writeln;
     import std.format : format;

     Time e = ISO8601();
     BDTime = e.bdTime();
}
```
or would I need to use `match!` to get the right structure type and then generate the internal time representation?



Just as an aside, [taggedalgebraic](https://code.dlang.org/packages/taggedalgebraic) does this for you.

-Steve

Reply via email to