digitalmars.D.learn - static foreach direct use of variables
- Michelle Long (18/18) Jan 01 2019 auto foo(S s)
- Adam D. Ruppe (6/12) Jan 01 2019 try
- Paul Backus (9/17) Jan 01 2019 You can do this with `std.meta.AliasSeq`:
- Michelle Long (2/20) Jan 01 2019 I tried that but it didn't work... I will try again.
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.
Jan 01 2019
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.
Jan 01 2019
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);
}
}
Jan 01 2019
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:I tried that but it didn't work... I will try again.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); } }
Jan 01 2019









Adam D. Ruppe <destructionator gmail.com> 