digitalmars.D - variable destructuring in D (tuples and ranges)
- valmat (48/48) Feb 20 2018 Hi there!
 - Timothee Cour (3/49) Feb 20 2018 see https://forum.dlang.org/post/p3bdp1$2b4e$1@digitalmars.com [Tuple DI...
 
Hi there!
I just started learn D.
First it is greatful language.
But unfortunatly it doesn't have variable destructuring syntax.
Like this:
```
auto x,y,z = tuple(26, "hi", 'a');
auto x,y,z = [1,2,3];
auto x,y,z = anyRange;
```
Because it is convenient i wrote my own implementation of this 
opportunity
Here is an example:
```
import std.stdio    : writeln;
import std.typecons : tuple;
import vlm.utils.destructing : tie;
void main()
{
     // Traversable (arrays or any lazy ranges)
     string a, b, c;
     tie(a,b,c) = ["foo1","foo2","foo3","foo4","foo5","foo6"];
     // May retrive undercomplit ranges
     tie(a,b,c) = ["bar1","bar2"];
     size_t i, j, k;
     float pi;
     int l;
     // Automatically cast types (int -> size_t)
     tie(i,j,k) = [1,2];
     tie(i,pi,l) = [3.14, 3.14, 3.14];
     // Tuples
     int    x;
     string y;
     char   z;
     size_t u,v,w;
     tie(x,y,z) = tuple(1, "hello", 'a', 777, 3.14);
     tie(x,y,z) = tuple(15, "world");
}
```
The sourse code is here: 
https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629
I would be glad if this would be useful for you
And how about to consider of inclusion this possibility in the 
language?
PS
i'm newbie in D so may be my code is not optimal.
I'm used to writing in C++ style and maybe in D part of my code 
could be easier
 Feb 20 2018
see https://forum.dlang.org/post/p3bdp1$2b4e$1 digitalmars.com [Tuple DIP]
On Tue, Feb 20, 2018 at 11:01 AM, valmat via Digitalmars-d
<digitalmars-d puremagic.com> wrote:
 Hi there!
 I just started learn D.
 First it is greatful language.
 But unfortunatly it doesn't have variable destructuring syntax.
 Like this:
 ```
 auto x,y,z = tuple(26, "hi", 'a');
 auto x,y,z = [1,2,3];
 auto x,y,z = anyRange;
 ```
 Because it is convenient i wrote my own implementation of this opportunity
 Here is an example:
 ```
 import std.stdio    : writeln;
 import std.typecons : tuple;
 import vlm.utils.destructing : tie;
 void main()
 {
     // Traversable (arrays or any lazy ranges)
     string a, b, c;
     tie(a,b,c) = ["foo1","foo2","foo3","foo4","foo5","foo6"];
     // May retrive undercomplit ranges
     tie(a,b,c) = ["bar1","bar2"];
     size_t i, j, k;
     float pi;
     int l;
     // Automatically cast types (int -> size_t)
     tie(i,j,k) = [1,2];
     tie(i,pi,l) = [3.14, 3.14, 3.14];
     // Tuples
     int    x;
     string y;
     char   z;
     size_t u,v,w;
     tie(x,y,z) = tuple(1, "hello", 'a', 777, 3.14);
     tie(x,y,z) = tuple(15, "world");
 }
 ```
 The sourse code is here:
 https://gist.github.com/valmat/763c72465d7a1737229ae1c91393d629
 I would be glad if this would be useful for you
 And how about to consider of inclusion this possibility in the language?
 PS
 i'm newbie in D so may be my code is not optimal.
 I'm used to writing in C++ style and maybe in D part of my code could be
 easier
 Feb 20 2018








 
 
 
 Timothee Cour <thelastmammoth gmail.com>