std.string and std.algorithm: what to do?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu May 14 08:06:44 PDT 2009
Daniel Keep wrote:
>
> Steven Schveighoffer wrote:
>> On Thu, 14 May 2009 09:55:08 -0400, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Also, I dislike the signature int find() that returns -1 if not found.
>>> Time and again experience shows that find() returning a range is much
>>> better in real code because it works seamlessly when the
>>> substring/element was not found (no more need for an extra test!)
>> Ech, returning -1 is the bane of Java and C#. The return value should
>> be the end of the string, regardless of whether it is a range or index.
>> I could never understand the mentality of returning -1 versus end of
>> string.
>>
>> -Steve
>
> int idx = find(str);
> if( idx == -1 ) doStuff;
>
> - or -
>
> if( idx == str.length ) doStuff;
I think Steve's point is that often you want to do something like:
auto before = str[0 .. find(str, something)];
or
auto after = str[find(str, something) .. $];
which behave nicely at limit conditions (when something isn't found). In
contrast, the version with -1 needs a separate varible and a test - a mess.
Andrei
More information about the Digitalmars-d
mailing list