Trying to use a template class with ranges
mark
mark at qtrac.eu
Thu Feb 6 12:16:41 UTC 2020
I am starting on porting Python's difflib's sequence matcher to D.
I want to have a class that will accept two ranges whose elements
are of the same type and whose elements can be compared for
equality.
How do I make a class declaration that specifies a (forward)
range type and an equality-supporting element type?
Here's what doesn't work:
class Diff(T, E) {
T a; // T should be a forward range of E elements
T b; // E elements must support == and !=
// This is a hash key=E element, value=slice of size_t
size_t[][E] b2j;
this(T a, T b) {
this.a = a;
this.b = b;
chainB();
}
void chainB() {
foreach (i, element; b)
b2j[element] ~= i;
// TODO
}
}
unittest {
import std.stdio: writeln;
writeln("unittest for the diffrange library.");
auto a = ["Tulips are yellow,", "Violets are blue,",
"Agar is sweet,", "As are you."];
auto b = ["Roses are red,", "Violets are blue,",
"Sugar is sweet,", "And so are you."];
auto diff = Diff(a, b);
}
More information about the Digitalmars-d-learn
mailing list