digitalmars.D.learn - [Sharing]Tuple to variables (My Function)
- MattCoder (37/37) Jun 14 2013 Hi,
- bearophile (8/13) Jun 14 2013 You have to verify in the function constraint that the lengths
- MattCoder (9/11) Jun 14 2013 In fact that was intentional, because sometimes I just want few
Hi,
Sooner I asked about this ([Doubt] Variadic arguments as
reference (Possible?) - -
http://forum.dlang.org/thread/jwujjhjizkovvmbegaio forum.dlang.org).
In fact my intend was to recreate a feature that I like in
Python, where you can assign variables from a tuple, e.g.:
pos = (10, 20)
x,y = Pos
or
RGB = (255,255,255)
r,g,b = RGB
Thanks to the fellows who help me early morning, I wrote the
workable version below:
import std.stdio;
import std.typecons;
import std.variant;
void tupleToVar(A, T...)(A inTuple, ref T listParams){
foreach(i, ref p; listParams){
if(!(i<inTuple.length))
break;
p = inTuple[i];
}
}
void main()
{
auto myTuple = tuple(1,2,3,"Test");
Variant a, b, c, d;
tupleToVar(myTuple, a, b, c, d);
writeln(a);
writeln(b);
writeln(c);
writeln(d);
}
dpaste: http://dpaste.dzfl.pl/6f3f25d0
It would be nice if it could appear more like python, but I think
this would be a internal dev.
Matheus.
Jun 14 2013
MattCoder:void tupleToVar(A, T...)(A inTuple, ref T listParams){I think in the C++11 STL a similar function is named tie.if(!(i<inTuple.length)) break;You have to verify in the function constraint that the lengths match.It would be nice if it could appear more like python, but I think this would be a internal dev.There is a DIP about it, but it's currently stalled: http://wiki.dlang.org/DIP32 Bye, bearophile
Jun 14 2013
On Saturday, 15 June 2013 at 00:47:01 UTC, bearophile wrote:You have to verify in the function constraint that the lengths match.In fact that was intentional, because sometimes I just want few items from a tuple not all. For example: auto RGB = tuple(255, 125, 50); Variant r,g; tupleToVar(RGB, r, g); // I just want the red and green values from a tuple Matheus.
Jun 14 2013








"MattCoder" <mattcoder hotmail.com>