Input/Output multiple values from function

Jabari Zakiya jzakiya at gmail.com
Wed Aug 28 13:11:46 UTC 2019


On Wednesday, 28 August 2019 at 10:10:08 UTC, Simen Kjærås wrote:
> On Wednesday, 28 August 2019 at 05:17:28 UTC, Jabari Zakiya 
> wrote:
>> Inside func2 I create an input value for func1 and then assign 
>> func1's 4 outputs to named variable. That's where the problems 
>> arise. func1 does some math based on the input and generates 4 
>> outputs.
>>
>> I can't do (a, b, c,d) = func1(i) directly.
>> What do I do to assign the output of func1 to the individual 
>> variables?
>
> import std.meta : AliasSeq;
> import std.typecons : tuple;
>
> auto fun() {
>     return tuple(1, "test");
> }
>
> unittest {
>     int a;
>     string b;
>     AliasSeq!(a, b) = fun;
>     assert(a == 1);
>     assert(b == "test");
> }
>
> --
>   Simen

When I do this:

uint a; uint b; uint[] c; uint[] d;
   AliasSeq!(a, b, c, d) = genPGparameters(pg);
   modpg    = a;
   res_0    = b;
   restwins = c;
   resinvrs = d;

the compiler (ldc2 1.17) says:

D Projects ~/D/bin/ldc2 --release -O3 twinprimes_ssoznew1.d
twinprimes_ssoznew1.d(170): Error: cannot implicitly convert 
expression c of type uint[] to shared(uint[])
twinprimes_ssoznew1.d(171): Error: cannot implicitly convert 
expression d of type uint[] to shared(uint[])

where modpg, res_0; restwins, resinvrs are shared (global) 
variables.



More information about the Digitalmars-d-learn mailing list