splitter trouble
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Oct 30 16:57:11 PDT 2016
While working on a solution for Alfred Newman's thread, I came up with
the following interim solution, which compiled but failed:
auto parse(R, S)(R range, S separators) {
import std.algorithm : splitter, filter, canFind;
import std.range : empty;
static bool pred(E, S)(E e, S s) {
return s.canFind(e);
}
return range.splitter!pred(separators).filter!(token => !token.empty);
}
unittest {
import std.algorithm : equal;
import std.string : format;
auto parsed = parse("_My input.string", " _,.");
assert(parsed.equal([ "My", "input", "string" ]), format("%s",
parsed));
}
void main() {
}
The unit test fails and prints
["put", "ing"]
not the expected
["My", "input", "string"].
How is that happening? Am I unintentionally hitting a weird overload of
splitter?
Ali
More information about the Digitalmars-d-learn
mailing list