Thread overview
Returning Arrays from Functions
Jan 18, 2017
Samwise
Jan 18, 2017
Adam D. Ruppe
Jan 18, 2017
Samwise
Jan 18, 2017
Adam D. Ruppe
Jan 18, 2017
Samwise
January 18, 2017
I've done a whole bunch of looking around, and I don't see any mention of returning a dynamic array from a function. When I try it though, it just returns the .length value of the array, rather than the contents of the array. Does anyone know why this is, and what I can do to make it behave the way I want it to?
January 18, 2017
What code do you have now?
January 18, 2017
On Wednesday, 18 January 2017 at 22:37:25 UTC, Adam D. Ruppe wrote:
> What code do you have now?

This is the basic function. It takes all those boolean arguments and does things depending on them, and then takes any extra args that getopt didn't parse and reads them into numbs. That code works fine, because I write it out after that's done but before I pass it back to main().

ulong[] getInp (bool help, bool file, bool inp, string[] args) {
	//...
	writeln(numbs);
	return numbs;
}

Here is what I've got in main (Minus some more stuff). Right now it's just printing out what it gets, but it will use other functions to apply operations to numbs later.

int main(string[] args) {
        ulong[] numbs;
        //...
	numbs[] = getInp(help, file, inp, args);

	writeln(numbs);
	return 0;
}

That prints out an empty array. If I initialize one element, (numbs[0] ~= 0;) then it prints out numbs.length. Really kinda weird... Thanks,
~Sam
January 18, 2017
On Wednesday, 18 January 2017 at 22:51:17 UTC, Samwise wrote:
> 	numbs[] = getInp(help, file, inp, args);

This is wrong, try just `numbs = getImp(...);`

numbs[] = xxx will copy stuff into the existing array, which is empty right now. You want to jut keep the slice the function passes back.
January 18, 2017
On Wednesday, 18 January 2017 at 23:09:15 UTC, Adam D. Ruppe wrote:
> On Wednesday, 18 January 2017 at 22:51:17 UTC, Samwise wrote:
>> 	numbs[] = getInp(help, file, inp, args);
>
> This is wrong, try just `numbs = getImp(...);`
>
> numbs[] = xxx will copy stuff into the existing array, which is empty right now. You want to jut keep the slice the function passes back.

Huh. I thought I tried that. I guess I didn't, since it worked like a charm. Thanks loads.
~Sam