On Monday, 25 December 2017 at 12:03:32 UTC, aliak wrote:
Hi, been looking for a way to convert an array to a tuple, but
can't seem to find one. Is there one?
Looking for something like:
alias Point = Tuple!(int, "x", int, "y");
enum data = "1,2:8,9";
auto points = data
.split(':')
.map!(a => a
.split(',')
.map!(to!int)
)
.map!Point; // <-- this works if you do `.map!(a =>
Point(a[0], a[1]));` instead
Cheers!
hi aliak
since Point is a Tuple and does not have a constructor that takes
a list of integers (int[]), you should have a helper function.
import std.stdio: writeln;
import std.string: split;
import std.algorithm: map;
import std.typecons: Tuple;
import std.conv: to;
alias Point = Tuple!(int, "x", int, "y");
enum data = "1,2:8,9";
alias makePoint = (auto ref points) => Point(points[0],
points[1]);
alias convertToInt = (string parts) =>
parts.split(',').map!(to!int);
auto points =
data.split(':').map!(convertToInt).map!(makePoint);
writeln(points);