Re: Can I count the of enum's fields at compile time?
On Thursday, 23 November 2017 at 01:34:54 UTC, Ali Çehreli wrote: On 11/22/2017 05:21 PM, Marc wrote: On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote: On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: [...] import std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis This sounds more readable. I was going to write a "function extension" to enum but I think it isn't really needed. Thank you too. As an eponymous template: enum One { a } enum Three { a, b, c } import std.range : EnumMembers; enum countOf(E) = EnumMembers!E.length; unittest { static assert(countOf!One == 1); static assert(countOf!Three == 3); } void main() { } Ali whoa, this is so easy and elegant. I'm falling in love with D. Thank you too!
Re: Can I count the of enum's fields at compile time?
On 11/22/2017 05:21 PM, Marc wrote: On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote: On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields import std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis This sounds more readable. I was going to write a "function extension" to enum but I think it isn't really needed. Thank you too. As an eponymous template: enum One { a } enum Three { a, b, c } import std.range : EnumMembers; enum countOf(E) = EnumMembers!E.length; unittest { static assert(countOf!One == 1); static assert(countOf!Three == 3); } void main() { } Ali
Re: Can I count the of enum's fields at compile time?
On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote: On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields import std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis This sounds more readable. I was going to write a "function extension" to enum but I think it isn't really needed. Thank you too.
Re: Can I count the of enum's fields at compile time?
On Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: > for example: > > enum A { a = -10, b = -11, c = -12, d = -13, e = -34} > > enum int countOfA = coutOfFields(A); // 5 fields import std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis
Re: Can I count the of enum's fields at compile time?
On Thursday, 23 November 2017 at 01:01:42 UTC, Michael V. Franklin wrote: On Thursday, 23 November 2017 at 00:58:21 UTC, Marc wrote: for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields https://dlang.org/spec/traits.html#allMembers enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = __traits(allMembers, A).length; // 5 fields static assert(countOfA == 5); Mike This was fast! Thanks
Re: Can I count the of enum's fields at compile time?
On Thursday, 23 November 2017 at 00:58:21 UTC, Marc wrote: for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields https://dlang.org/spec/traits.html#allMembers enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = __traits(allMembers, A).length; // 5 fields static assert(countOfA == 5); Mike
Can I count the of enum's fields at compile time?
for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields