On Friday, 17 March 2017 at 19:08:36 UTC, Russel Winder wrote:
On Fri, 2017-03-17 at 17:51 +0000, Jerry via Digitalmars-d-learn wrote:
On Friday, 17 March 2017 at 17:13:48 UTC, Russel Winder wrote:
> I have a bit of code:
> > string[] returnValue;
>    foreach(string key, string[] value; groups) {
>            returnValue ~=
> value.sort!debianPackageNumberComparator()[0..$-1].array;
>    }
>    return returnValue;
> > [...]

You forgot a ! on the map call.

.map!((Tuple!(string, string[]) a) =>
a[1].sort!debianPackageNumberComparator()[0..$-1])

How embarrassed am I? :-)

However, the result of the map appears to be untransformable to
anything related to a sequence of string. The result is some type that renders as a sequence of sequence using writeln but how to reduce it to a sequence? reduce isn't defined on MapResult and if I transform to an array reduce is not defined on SortedRange[]. Rust ownership problems
seem to be a doddle compared to this problem.

reduce is a free function in std.algorithm. Just import it and you're away. Anyway, is this what you wanted?

string[] blah(string[][string] groups)
{
    import std.algorithm : map, joiner;
    import std.array : array, byPair;
    return groups.byPair()
.map!(a => a[1].sort!debianPackageNumberComparator()[0..$-1])
        .joiner
        .array;
}

Reply via email to