Major performance problem with std.array.front()

Dmitry Olshansky dmitry.olsh at gmail.com
Sat Mar 8 07:56:02 PST 2014


08-Mar-2014 19:32, Andrei Alexandrescu пишет:
> On 3/8/14, 12:09 AM, Dmitry Olshansky wrote:
>> 08-Mar-2014 05:23, Andrei Alexandrescu пишет:
>>> On 3/7/14, 1:58 PM, Vladimir Panteleev wrote:
>>>> On Friday, 7 March 2014 at 21:56:45 UTC, Eyrk wrote:
>>>>> On Friday, 7 March 2014 at 20:43:45 UTC, Vladimir Panteleev wrote:
>>>>>> No, it doesn't.
>>>>>>
>>>>>> import std.algorithm;
>>>>>>
>>>>>> void main()
>>>>>> {
>>>>>>    auto s = "cassé";
>>>>>>    assert(s.canFind('é'));
>>>>>> }
>>>>>>
>>>>>
>>>>> Hm, I'm not following? Works perfectly fine on my system?
>>>>
>>>> Something's messing with your Unicode. Try downloading and compiling
>>>> this file:
>>>> http://dump.thecybershadow.net/6f82ea151c1a00835cbcf5baaace2801/test.d
>>>
>>> Yup, the grapheme issue. This should work.
>>>
>>> import std.algorithm, std.uni;
>>>
>>> void main()
>>> {
>>>      auto s = "cassé";
>>>      assert(s.byGrapheme.canFind('é'));
>>> }
>>>
>>> It doesn't compile, seems like a library bug.
>>
>> Becasue Graphemes do not auto-magically convert to dchar and back? After
>> all they are just small strings.
>
> Yah but I think they should support comparison with individual
> characters. No?
>

We could add one. I don't think Grapheme interface is optimal or set in 
stone.

The following should work as is though:

s.byGrapheme.canFind(Grapheme("é"))


> Andrei
>


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list