Sort using Uniform call syntax
Ali Çehreli via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Mar 14 11:27:30 PDT 2016
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
More information about the Digitalmars-d-learn
mailing list