Passing a variable number of slices into a function
Steven Schveighoffer
schveiguy at gmail.com
Mon Jun 22 13:21:08 UTC 2020
On 6/21/20 10:04 PM, user1234 wrote:
> 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 ?
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.
-Steve
More information about the Digitalmars-d-learn
mailing list