How do I check if a variable is a multidimensional (2D) array?

Kirill kirill.saidov at mail.com
Mon Jul 12 05:16:03 UTC 2021


On Monday, 12 July 2021 at 05:08:29 UTC, jfondren wrote:
> On Monday, 12 July 2021 at 04:25:00 UTC, Kirill wrote:
>> I know there is isArray!T and similar functionality in 
>> std.traits. But I couldn't find the functionality that can 
>> help me check if I have a multidimensional array. Is there 
>> any? How do I create my own?
>>
>> Thanks in advance.
>
> from https://github.com/PhilippeSigaud/D-templates-tutorial
>
> ```d
> template rank(T) {
>     static if (is(T t == U[], U))
>         enum size_t rank = 1 + rank!(U);
>     else
>         enum size_t rank = 0;
> }
>
> unittest {
>     int a;
>     int[] b;
>     int[][] c;
>     assert(rank!(typeof(a)) == 0);
>     assert(rank!(typeof(b)) == 1);
>     assert(rank!(typeof(c)) == 2);
> }
> ```
>
> as an example of a recursive template. There's also an 
> implementation for ranges.

Thanks!


More information about the Digitalmars-d-learn mailing list