On Sunday, 20 May 2018 at 23:01:39 UTC, Charles Hixson wrote:
auto has its uses, but it's wildly overused, especially in library code and documentation, and really, really, *really* much so in documentation examples.



A lot of functions in `std.algorithm` are actually quite clear about it, e.g. `splitter`:

"auto splitter(alias pred = "a == b", Range, Separator)(Range r, Separator s)
...
Returns:
An input range of the subranges of elements between separators. If r is a forward range or bidirectional range, the returned range will be likewise. When a range is used a separator, bidirectionality isn't possible."

So it obviously returns a range which you can process as a range. No need to know about the exact type (which may change). All you need to know is that it adheres to a minimal range interface (r.empty, r.front, r.popFront). Without `auto`, it'd be a solid mess and generics would become more or less useless.

Even Java is moving into this direction and it makes sense for a lot of day to day issues, programmes will increasingly demand it. Code like the following is much more elegant than using the ould for loop:

JSONObject jitems = new JSONObject();
data.entrySet()
.forEach(i -> { jitems.put(i.getKey(), i.getValue()); });

Reply via email to