On Saturday, 22 February 2014 at 03:51:19 UTC, Jesse Phillips
wrote:
On Thursday, 20 February 2014 at 19:34:17 UTC, w0rp wrote:
I suppose the next step after that would be to
support nested unpacking, but that would require a change in
syntax so it would be much more complicated.
You mean this?
void main() {
import std.typecons : tuple;
import std.range : repeat;
foreach(k,v1, v2; tuple(1, tuple(2, 3)).repeat(4))
{}
}
Yeah, that works.
Ah, I didn't realise you could decompose tuples that way.
I suppose this in Python...
l = [((1, 2), (3, 4, 5))]
for (x, y), (a, b, c) in l:
print (x, y, a, b, c)
... kind of becomes this in D.
auto left = tuple(1, 2);
auto right = tuple(3, 4, 5);
auto both = tuple(left, right);
auto l = [both];
// identity map function to trick the array into being just a
range.
foreach(x, y, a, b, c; l.map!(x => x)) {
writeln(x, y, a, b, c);
}
Then static typing makes you not worry about which thing comes
from which tuple.