Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
March 14, 2016 Sort using Uniform call syntax | ||||
---|---|---|---|---|
| ||||
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? |
March 14, 2016 Re: Sort using Uniform call syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jerry | 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 Ali |
March 14, 2016 Re: Sort using Uniform call syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli | 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
|
March 14, 2016 Re: Sort using Uniform call syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jonathan M Davis | 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
|
March 14, 2016 Re: Sort using Uniform call syntax | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli | On Monday, March 14, 2016 11:27:30 Ali Çehreli via Digitalmars-d-learn wrote: > 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): It was my understanding that the built-in sort did indeed sort individual chars, so if that's not currently the case, I expect that someone fixed it at some point. Still, it should be removed from the language at some point. - Jonathan M Davis |
Copyright © 1999-2021 by the D Language Foundation