On Wednesday, 15 October 2014 at 16:48:24 UTC, Laeeth Isharc
wrote:
Hi.
I have to write a bunch of functions that operate on input
arrays to return multiple output arrays.
In case helpful the inputs are price bars or economic data
points (datetime, ohlc) and the outputs are nx1 arrays (I won't
say vectors) of doubles or structs.
What is the best way to return multiple arrays in this kind of
situation. In Python I returned a tuple of numpy arrays, and
the C way would be to pass a pointer to the return
destinations, and I guess I could do the same in a D way by
passing by ref not value).
I see that I can return a struct containing dynamic arrays, and
return it (by value of course). I have read the forum
discussion a while back over how to return multiple values, and
tried using tuples. I don't see that I can return a tuple of
arrays - am I missing something?
Here is a simple case. Can I do better ?
Thanks.
import std.typecons;
import std.stdio;
struct RetStruct
{
double[] a;
double[] b;
}
RetStruct myfunction(double x)
{
RetStruct s;
double[] a,b;
a~=x+1.0;
a~=x+9.0;
b~=x+2.0;
b~=x+11.0;
s.a=a;
s.b=b;
return s;
}
void main()
{
writefln("%s",myfunction(99.0));
}
You could also return an std.typecons.Tuple containing both
arrays. http://dlang.org/phobos/std_typecons.html#.Tuple