filtering a row of a jagged array
Simen Kjærås
simen.kjaras at gmail.com
Sun Aug 11 16:35:28 UTC 2019
On Sunday, 11 August 2019 at 16:11:15 UTC, DanielG wrote:
> int[][] whatever = [
> [0],
> [0, 1, 2],
> [5, 6, 7, 8, 9, 10]
> ];
> writeln(whatever[2]); // [5, 6, 7, 8, 9, 10]
> writeln(typeid(whatever[2])); // int[]
> auto x = whatever[2].filter(x => x > 7); // error
>
> Error: template std.algorithm.iteration.filter cannot deduce
> function from argument types !()(int[], void), candidates are:
> ...
>
> Online example:
> https://run.dlang.io/is/LUXFuF
>
> ...
>
> I'm guessing I need to give the compiler some help
> understanding that this is an array of ints, but 1) how, and 2)
> why? [if typeid() seems to understand just fine?]
You're missing an exclamation mark after filter - it takes the
predicate as a template argument. This compiles just fine:
auto x = whatever[2].filter!(x => x > 7);
--
Simen
More information about the Digitalmars-d-learn
mailing list