On Thu, Jan 16, 2020 at 05:03:33PM +0000, mark via Digitalmars-d-learn wrote: [...] > auto wordCharCounts4 = words // I added this and it won't compile > .map!(a => a.count); // Error: no property count for type string > writeln(wordCharCounts4);
You need to import std.algorithm to get `count`. > I don't understand why both syntaxes work for .length but only the > string form for .count? Because .length is a property of strings, whereas .count is actually not a string property, but a function that's being called via UFCS: Unified Function Call Syntax, in which when the compiler sees something like: obj.func(x, y, z); but `obj` doesn't have a member named `func`, then it will try to rewrite it into: func(obj, x, y, z); instead. T -- Knowledge is that area of ignorance that we arrange and classify. -- Ambrose Bierce