I'm impressed and most grateful for the feedback, I've learned some new things today :)

int i = 5;
auto foo = new int[][](i,i);

Won't this create an array (with 5 elements) of arrays (with 5 elements), also called a "jagged array"? Where memory is not necessarily continuously allocated and looking up values adds another layer of indirection?


It is much more simple actually, "typeof(match(string.init, Regex.init)) variable;" and no extra functions or source digging is needed.

Many of you pointed this out, thanks, this a better solution than what I had. I needed to write "Regex!char.init" and not just "Regex.init", but that's just a minor detail.


Yea, I'd imagine there would be some value-type/reference-type
confusion from a lot of newcomers just because D *has* both value types and reference types. As opposed to, say, Java where (almost?) everything is a reference type, or C++ where everything is a value type, etc.

Personally, I find it very much worthwhile to have both value and reference types. But you're right it is something many people will have
to learn to get used to, and particularly so with arrays.

I find it quite nice that you have both value and reference types, and for the most part it's rather clear in D when you're dealing with a reference and when you're dealing with a value. It was just arrays that caught me off guard, and I think others with a similar background may do the same mistake, so my comment about this really just is "arrays may require more explanation aimed at Java developers" :)


But D has an easy solution - just use RDMD instead:

rdmd --build-only -I{include paths as usual} {other flags} main.d

That's a good tip! Somehow I had the notion that rdmd was purely a tool for "scripting", as in dynamically parsing code (like Python, Perl, etc), so I never looked much into it.

Reply via email to