Returning multiple arrays from function - struct or byref the only option?

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Oct 15 10:56:05 PDT 2014


On 10/15/2014 09:48 AM, Laeeth Isharc wrote:

 > struct RetStruct
 > {
 >      double[] a;
 >      double[] b;
 > }
 >
 > RetStruct myfunction(double x)

That's my preference. Tuples would work as well but they have two minor 
issues for me:

- Unlike a struct, the members are anonymous. (Yes, tuples members can 
have names as well but not when returning or creating conveniently by 
'return tuple(a, b)'.)

- Unlike Python, there is no automatic tuple expansion so one has to 
refer to the members as result[0] and result[1], which is less readable 
than struct members. (Yes, there is some support for tuple expansion 
e.g. in foreach but it has some issues with the automatic foreach loop 
counter.)

Summary: I return by struct. :)

Ali



More information about the Digitalmars-d-learn mailing list