Alias type with different initialiser.
Daniel Kozak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Feb 13 08:40:02 PST 2017
Dne 13.2.2017 v 16:28 Bastiaan Veelo via Digitalmars-d-learn napsal(a):
> Hi,
>
> In Extended Pascal, you can derive from a basic type and change the
> default initialiser like so:
>
> type int1 = integer value 1;
> var i : int1;
> ii : int1 value 2;
> assert(i = 1);
> assert(ii = 2);
>
> I have it working in D, but it seems a little clumsy. Is there a
> better way?
>
>
> struct initial(T, T val)
> {
> private T _payload = val;
> alias _payload this;
>
> static initial opCall(T v)
> {
> initial s;
> s._payload = v;
> return s;
> }
> }
>
> unittest
> {
> alias initial!(int, 1) int1;
> int1 i;
> assert(i == 1);
> int1 ii = 2;
> assert(ii == 2);
> }
>
https://dlang.org/phobos/std_typecons.html#.Typedef
More information about the Digitalmars-d-learn
mailing list