On Thu, 14 May 2009 11:06:44 -0400, Andrei Alexandrescu <seewebsiteforem...@erdani.org> wrote:

Daniel Keep wrote:
 Steven Schveighoffer wrote:
On Thu, 14 May 2009 09:55:08 -0400, Andrei Alexandrescu
<seewebsiteforem...@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.

Yes, and to Daniels point, I don't see a drawback. Typing str.length vs -1 is really not that bad :)

-Steve

Reply via email to