Summary: Keep track of changes during replace function
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: Phobos

--- Comment #0 from 2011-06-04 19:15:09 PDT ---
Just had an idea, not sure if it makes sense.

When I was writing a code that executes a Markov algorithm, I had to call
std.array.replace(R, R, R), then depending on whether the replacement had made
any actual changes, I had to either continue the loop or redo it. In order to
find out if replace had made any changes I had to keep a copy and compare on
every iteration.

The relevant part of the code:

auto copy = tests[i];
foreach (c; capt) {
    tests[i] = replace(tests[i], c[0], c[2]);
    if (c[1] == ".") break;
    if (tests[i] != copy) goto redo;

It occurred to me that it would have been useful if the replace function had
had an out parameter keeping track of the number of changes. My code could have
looked like this:

int changed;
foreach (c; capt) {
    tests[i] = replace(tests[i], c[0], c[2], changed);
    if (c[1] == ".") break;
    if (changed) goto redo;

I realize that you can't meet everybody's needs and preferences, but I thought
I'd suggest it just in case it might be doable.

Configure issuemail:
------- You are receiving this mail because: -------

Reply via email to