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);

Reply via email to