Re: static foreach direct use of variables
On Tuesday, 1 January 2019 at 21:34:08 UTC, Paul Backus wrote: On Tuesday, 1 January 2019 at 21:14:09 UTC, Michelle Long wrote: auto foo(S s) { static foreach(k, p; [s, this]) for(int i = 0; i < p.length; i++) ... } The idea is to provide single for loop structure for each of the variables(in this case s and this). You can do this with `std.meta.AliasSeq`: string[] a = ["lions", "tigers", "bears"]; int[] b = [123, 456, 789]; static foreach(array; AliasSeq!(a, b)) { foreach (item; array) { writeln(item); } } I tried that but it didn't work... I will try again.
Re: static foreach direct use of variables
On Tuesday, 1 January 2019 at 21:14:09 UTC, Michelle Long wrote: auto foo(S s) { static foreach(k, p; [s, this]) for(int i = 0; i < p.length; i++) ... } The idea is to provide single for loop structure for each of the variables(in this case s and this). You can do this with `std.meta.AliasSeq`: string[] a = ["lions", "tigers", "bears"]; int[] b = [123, 456, 789]; static foreach(array; AliasSeq!(a, b)) { foreach (item; array) { writeln(item); } }
Re: static foreach direct use of variables
On Tuesday, 1 January 2019 at 21:14:09 UTC, Michelle Long wrote: auto foo(S s) { static foreach(k, p; [s, this]) for(int i = 0; i < p.length; i++) ... } try static foreach(...) {{ stuff }} The double {{ and double }} are intentional.
static foreach direct use of variables
auto foo(S s) { static foreach(k, p; [s, this]) for(int i = 0; i < p.length; i++) ... } The idea is to provide single for loop structure for each of the variables(in this case s and this). The is to avoid string mixins which are pathetic for this kind of work. The point is that instead of having to do for(int i = 0; i < s.length; i++) ... for(int i = 0; i < this.length; i++) ... in which case ... might be very long. Sure one can create a function and all that mess but the compiler should be able to do symbol replacement very naturally and easily.