What does func!thing mean?
qznc
qznc at web.de
Thu Nov 7 22:25:07 PST 2013
On Friday, 8 November 2013 at 05:46:29 UTC, ProgrammingGhost
wrote:
> I'm a D noob. ".map!(a => a.length)" seems like the lambda is
> passed into the template. ".map!split" just confuses me. What
> is split? I thought only types can be after "!". I would guess
> split is a standard function but then shouldn't it be
> map!(split)?
>
> const wordCount = file.byLine() // Read
> lines
> .map!split // Split
> into words
> .map!(a => a.length) // Count
> words per line
> .reduce!((a, b) => a + b); // Total
> word count
Do you know C++ templates? C++ func<thing> == D func!(thing).
You can pass anything into a template, not just types. So you are
right, "map!split" gives the "split" function into the "map"
template and "map!(split)" is the canonical form. D allows you to
remove the parens for simple cases, hence "map!split".
More information about the Digitalmars-d-learn
mailing list