On 2011-07-22 11:56, kenji hara wrote:
I have posted a pull request for library tuple (= alias this tuple) unpacking somewhere: https://github.com/D-Programming-Language/dmd/pull/74 (Test code) https://github.com/D-Programming-Language/dmd/pull/74/files#L7R130This patch allows unpacking tuple following places: - Non-template function arguments - Template function arguments - StructLiteral arguments - Initializer - foreach aggregate - foreach range.front And I think make enhancement patch allowing tuple declaration like follows: auto (i, s) = tuple(1, "str"); TypeTuple!(string, int[]) (s, arr) = TypeTuple!("str", [1, 2]); Syntax: ("auto" | TupleTypeName) "(" Identifier ["," Identifier ...] ")" "=" Initializer ";" Tuple assignment is already supported in current D like follows: import std.typetuple : seq = TypeTuple; void main() { int x, y; seq!(x, y) = seq!(1, 2); // aassign assert(x == 1); assert(y == 2); } I think more language support for tuple assignment is not need. Kenji Hara
Cool. But it's quite inconsistent that assignment requires "seq" and declaration doesn't.
(x, y) = seq!(1, 2); Would it be possible to allow the above syntax? -- /Jacob Carlborg
