On 03/14/2016 06:56 AM, Jonathan M Davis via Digitalmars-d-learn wrote:
On Monday, March 14, 2016 04:14:26 Ali Çehreli via Digitalmars-d-learn wrote:
On 03/14/2016 04:01 AM, Jerry wrote:
  > I have a small problem with using UCS when sorting arrays. This pops a
  > warning telling me to use the algorithm sort instead of the property
  > sort. Which I understand why it works that way. However that means I can
  > not have syntactic sugar. So is there any way around this or do I just
  > have to live with it?

Two options:

a) Use parentheses after sort:

      arr.sort()

b) Import sort() under a different name:

import std.algorithm: algsort = sort;

      arr.algsort

Yep. The sort property on arrays will likely go away eventually, but until
it does, those are your options. But at least now it warns you. Previously,
it just silently used the sort property, which does the wrong thing for
arrays of char or wchar.

- Jonathan M Davis

Do you mean property sort would sort individual chars? However, the following program indicates that it may have been fixed (i.e. made Unicode-aware):

import std.stdio;

void main() {
    auto arr = "çöüabc".dup;
    arr.sort;

    // (Not correct for a particular writing system but
    // that's beyond the point. It's still a correct string.)
    assert(arr == "abcçöü");

    foreach (c; arr) {
        writefln("%02x", c);
    }
}

Prints:

61
62
63
c3 <- Out of order
a7 <- etc.
c3
b6
c3
bc

Perhaps, this was an independent change? More likely I've misunderstood you. :)

Ali

Reply via email to