digitalmars.D.learn - Passing a variable number of slices into a function
- repr-man (16/16) Jun 21 2020 Is there any way to pass an unknown number of slices into a
- user1234 (13/22) Jun 21 2020 Can you provide more details for "that wasnt working" ? because
- Adam D. Ruppe (3/4) Jun 21 2020 in some cases T[][]... will work better too. depends on the
- Steven Schveighoffer (8/38) Jun 22 2020 I think the problem is that typesafe variadics bind to arrays as well as...
Is there any way to pass an unknown number of slices into a function? I'm trying to do something along the lines of: void func(T)(T[] args...) { //... } That wasn't working, so I tried using another generic type where T was already defined: void func(U)(U args...) if(is(U == T[]) { //... } This didn't work either, so I wanted to know if I was going in the right direction or if I was missing something obvious. Thanks for the help!
Jun 21 2020
On Monday, 22 June 2020 at 01:47:49 UTC, repr-man wrote:Is there any way to pass an unknown number of slices into a function? I'm trying to do something along the lines of: void func(T)(T[] args...) { //... } That wasn't working, [...] Thanks for the help!Can you provide more details for "that wasnt working" ? because void func(T)(T[] args...) { writeln(args.length); } void main() { int[] a,b; func(a[0..$],b[0..$]); } works, so there must be a missing detail. Maybe each slice has different type ?
Jun 21 2020
On Monday, 22 June 2020 at 02:04:06 UTC, user1234 wrote:Maybe each slice has different type ?in some cases T[][]... will work better too. depends on the details here....
Jun 21 2020
On 6/21/20 10:04 PM, user1234 wrote:On Monday, 22 June 2020 at 01:47:49 UTC, repr-man wrote:I think the problem is that typesafe variadics bind to arrays as well as individual parameters. So func(a[0 .. $]) for instance would resolve as func!int instead of the desired func!(int[]). The answer might be: func(T)(T[][] args...) as Adam says. -SteveIs there any way to pass an unknown number of slices into a function? I'm trying to do something along the lines of: void func(T)(T[] args...) { //... } That wasn't working, [...] Thanks for the help!Can you provide more details for "that wasnt working" ? because void func(T)(T[] args...) { writeln(args.length); } void main() { int[] a,b; func(a[0..$],b[0..$]); } works, so there must be a missing detail. Maybe each slice has different type ?
Jun 22 2020