RFC on SlidingSplitter Range

monarch_dodra via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Oct 3 14:17:52 PDT 2014


On Friday, 3 October 2014 at 20:15:33 UTC, Nordlöw wrote:
> Note that I had to tweak empty() a bit. I don't know if I got 
> right. Could you check?

Sounds about right, but I didn't really look.

> Further I can't get string support to work:
>
>     writefln("%(%s\n%)", slidingSplitter("Nordlöw"));
>
> errors as
>
> std.format.FormatException@/home/per/opt/x86_64-unknown-linux-gnu/dmd/linux/bin64/src/phobos/std/format.d(2591): 
> Expected '%s' format specifier for type 'SlidingSplitter!string'
>
> and
>
>     foreach (e; name)
>     {
>         version(show) writeln(e);
>     }
>
> errors as
>
> range_ex.d(132,5): Error: invalid foreach aggregate name, 
> define opApply(), range primitives, or use .tupleof
>
> which diagnostics I btw is responsible for :)
>
> Could you please check?

Sounds like your range isn't a range. Did you check that:
isInputRange!(SlidingSplitter!string)
?

As mentioned in the first reply, it's a very important check, as 
it's very easy to get wrong.

For example, if you forget to mark front and empty as properties, 
then you don't have the correct range interface I believe.

> On Friday, 3 October 2014 at 17:46:18 UTC, monarch_dodra wrote:
>>        writefln("%(%s\n%)", slidingSplitter("Nordlöw"));
>
> That's a really cool syntax, btw. I got to remember that.

Yup. Love it. Use it.


More information about the Digitalmars-d-learn mailing list