How can I make a nested array and flatten it at run time in D?

H. S. Teoh hsteoh at quickfur.ath.cx
Fri Mar 8 01:31:14 UTC 2019


On Fri, Mar 08, 2019 at 01:00:43AM +0000, Philos Kim via Digitalmars-d-learn wrote:
> I want to make a nested array and flatten it at run-time like this.
> 
> auto nestedArray = [1, 2, [3, 4], 5];

You can't write it this way because the nested array has a different
type from the other elements. You have to write this as:

	auto nestedArray = [[1], [2], [3, 4], [5]];


> auto flattenedArray = myFun(nestedArray);

Use std.algorithm.iteration.joiner:

	flattenedArray = nestedArray.joiner.array;

Or simpler, use std.array.join:

	flattenedArray = nestedArray.join;


> writeln(flattenedArray);   // => [1, 2, 3, 4, 5]


T

-- 
People say I'm indecisive, but I'm not sure about that. -- YHL, CONLANG


More information about the Digitalmars-d-learn mailing list