How to expand an expression along with a parameter tuple?

TommiT tommitissari at hotmail.com
Mon Jun 17 04:23:37 PDT 2013


On Monday, 17 June 2013 at 11:15:24 UTC, Artur Skawina wrote:
> On 06/17/13 11:32, TommiT wrote:
>> On Monday, 17 June 2013 at 07:20:23 UTC, Ali Çehreli wrote:
>>>
>>> The following does not answer the question of expanding but 
>>> at least foo() receives [30, 70, 110] :)
>>>
>>> import std.stdio;
>>> import std.algorithm;
>>> import std.array;
>>> import std.range;
>>>
>>> int[] arr = [ 1, 3, 5, 7, 11 ];
>>>
>>> void foo(T)(T[] values...)
>>> {
>>>     writeln(values);
>>> }
>>>
>>> void bar(T)(T[] values...)
>>> {
>>>     foo(arr
>>>         .indexed(values)
>>>         .map!(a => a * 10)
>>>         .array);
>>> }
>>>
>>> void main()
>>> {
>>>     bar(1, 3, 4);
>>> }
>>>
>>> Ali
>> 
>> Yeah, that would work. I'd hate the overhead though.
>
>    void bar(T...)(T values) {
>       T tmp;
>       foreach (i, ref v; values)
>          tmp[i] = arr[v]*10;
>       foo(tmp);
>    }
>
> artur

Cool, I didn't know that you could create multiple variables like 
that (T tmp).


More information about the Digitalmars-d-learn mailing list