digitalmars.D.learn - Can I count the of enum's fields at compile time?
- Marc (3/3) Nov 22 2017 for example:
- Michael V. Franklin (6/9) Nov 22 2017 https://dlang.org/spec/traits.html#allMembers
- Marc (3/14) Nov 22 2017 This was fast! Thanks
- Jonathan M Davis (4/7) Nov 22 2017 import std.traits;
- Marc (5/15) Nov 22 2017 This sounds more readable. I was going to write a "function
- =?UTF-8?Q?Ali_=c3=87ehreli?= (13/30) Nov 22 2017 As an eponymous template:
- Marc (3/31) Nov 22 2017 whoa, this is so easy and elegant. I'm falling in love with D.
for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fields
Nov 22 2017
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 fieldshttps://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
Nov 22 2017
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:This was fast! Thanksfor example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fieldshttps://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
Nov 22 2017
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 fieldsimport std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis
Nov 22 2017
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: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.for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fieldsimport std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis
Nov 22 2017
On 11/22/2017 05:21 PM, Marc wrote:On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote: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() { } AliOn Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: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.for example: enum A { a = -10, b = -11, c = -12, d = -13, e = -34} enum int countOfA = coutOfFields(A); // 5 fieldsimport std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis
Nov 22 2017
On Thursday, 23 November 2017 at 01:34:54 UTC, Ali Çehreli wrote:On 11/22/2017 05:21 PM, Marc wrote:whoa, this is so easy and elegant. I'm falling in love with D. Thank you too!On Thursday, 23 November 2017 at 01:04:29 UTC, Jonathan M Davis wrote: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() { } AliOn Thursday, November 23, 2017 00:58:21 Marc via Digitalmars-d-learn wrote: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.[...]import std.traits; enum countOfA = EnumMembers!A.length; - Jonathna M Davis
Nov 22 2017