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.