Talk:DIP32
About $identifier
Why not require normal declaration syntax, when a variable should be declared in unpacking?
Suggested in DIP:
switch (tup) {
case {1, 2}:
case {$, 2}:
case {1, x}:
default:
}
// -----------------------------
int x = 1;
if (auto {$x, y} = coord) { ... }
My suggestion:
switch (tup) {
case {1, 2}:
case {$, 2}:
case {1, auto x}:
default:
}
// -----------------------------
int x = 1;
if ({x, auto y} = coord) { ... }
This would be more consistent with how if usually works (expression syntax => use existing variable, declaration syntax => declare variable initialized with the value of the comparison), doesn't require this special syntax which is used nowhere else in the language, and makes it obvious that a declaration takes place.
It also allows to use unpacking everywhere:
int x;
{x, int y} = tup;
Variable declaration in case statements
Care must be taken when variable declaration is used in combination with fall through / goto case in case statements:
switch (tup) {
case {1, 2}:
case {$, 2}:
goto case;
case {1, x}:
// what is x if tup == {1, 2}?
}
Tuple Slicing?
If you want you can also add a slicing syntax for tuples:
auto t1 = {10, 20.5, "foo"};
auto t2 = t1[1 .. $];