August 15, 2018
Hello,
I have the following code:
> string[] list;
> string text;
> // ...
> enum pattern = ctRegex!`^[0-9]+$`;
> list = text.split('\n').map!(line => line.matchFirst(pattern).hit);

Compiler says that it can't convert result of map function to string[]...

What I want:
1. Split some text into lines using separator '\n'.
2. Apply to each line a regex pattern and extract matched text.
3. Result of these operations assign to variable of type string[].

Tried to do this:
> list = text.split('\n').map!(line => line.matchFirst(pattern).hit).to!(string[]);
but no success...
August 15, 2018
On Wednesday, 15 August 2018 at 13:53:02 UTC, Andrey wrote:
> Hello,
> I have the following code:
>> string[] list;
>> string text;
>> // ...
>> enum pattern = ctRegex!`^[0-9]+$`;
>> list = text.split('\n').map!(line => line.matchFirst(pattern).hit);
>
> Compiler says that it can't convert result of map function to string[]...

The result of `map` is a lazily-evaluated range. To convert it to an array, use `std.array.array`:

import std.array: array;
//...
list = text
    .split('\n')
    .map!(line => line.matchFirst(pattern).hit)
    .array;