On Wed, Jan 19, 2022 at 09:59:15PM +0000, forkit via Digitalmars-d-learn wrote:
> so I have this code below, that creates an array of tuples.
> 
> but instead of hardcoding 5 tuples (or hardcoding any amount of
> tuples), what I really want to do is automate the creation of
> how-ever-many tuples I ask for:
> 
> i.e.
> 
> instead of calling this: createBoolMatrix(mArrBool);
> I would call something like this: createBoolMatrix(mArrBool,5); //
> create an array of 5 typles.

Why can't you just use a loop to initialize it?

        uint[][] createBoolMatrix(size_t n) {
                auto result = new uint[][n]; // allocate outer array
                foreach (ref row; result) {
                        row = new uint[n]; // allocate inner array
                        foreach (ref cell; row) {
                                cell = cast(uint) rnd.dice(0.6, 1.4);
                        }
                }
                return result;
        }

Or, if you wanna use those new-fangled range-based idioms:

        uint[][] createBoolMatrix(size_t n) {
                return iota(n)
                        .map!(i => iota(n)
                                .map!(j => cast(uint) rnd.dice(0.6, 1.4))
                                .array)
                        .array;
        }


T

-- 
Verbing weirds language. -- Calvin (& Hobbes)

Reply via email to