Kenji hara: > I have posted pull request. > https://github.com/D-Programming-Language/dmd/pull/341
Thank you. If it works well then it will be a significant improvement for D. I invite people here to try it and use it a bit, and look for possible corner cases or troubles :-) This is an example of D2 code that uses tuples (it's a translation of OcaML code), the new syntax is able to simplify this code, making it better: http://rosettacode.org/wiki/Color_quantization#D ------------------- There are two more cases where the tuple unpacking syntax will be useful, that aren't supported by pull 341 (the array were supported in a precedent version of it): void main() { int[] a1 = [1, 2]; int[2] a11; a11 = a1; // runtime test (auto x, y) = a1; // runtime test int[2] a2 = [1, 2]; (auto z, w) = a2; // no need to verify a2 length at runtime here } import std.string; void main() { string s = " foo bar "; (auto sa, sb) = s.split(); } import std.algorithm, std.conv, std.string; void main() { string s = " 15 27"; (int x, int y) = map!(to!int)(splitter(s)); } See here for more info: http://d.puremagic.com/issues/show_bug.cgi?id=6383 ----------------- This OCaML function returns the sum of two RGB colors (here represented with a 3-tuple of FP values), this is typical code: let rgb_add (r1,g1,b1) (r2,g2,b2) = (r1 +. r2, g1 +. g2, b1 +. b2) A possible D syntax (a better syntax is possible): auto rgbAdd(Color(r1,g1,b1), Color(r2,g2,b2)) { return Color(r1 + r2, g1 + g2, b1 + b2); } Note that in some cases you can't use the sometuple.tupleof syntax: bool isGreeny(Color(r, g, b)) { return g > 2; } auto r = filter!isGreeny([Color(1,2,3), Color(4,5,6)]); See here for more info: http://d.puremagic.com/issues/show_bug.cgi?id=6544 Bye, bearophile
