Issue 1323

bearophile bearophileHUGS at lycos.com
Sat Jan 8 16:19:21 PST 2011


BlazingWhitester:

> If 'in' operator was overladable, users would expect it to have some 
> known complexity.

Like O(n) for a linear search in an array.


> Having sintactic sugar for some operation means that it is supposed to 
> be used widely, and using O(n) operations all over the place is not a 
> good idea.

I have to search chars in strings, substrings in strings and items in arrays about equally often if the syntax is built-in or it comes from one or more library functions.

Well, not having a built-in array search, in D code I sometimes replace:
x in [1, 5, 7]
with
(x == 1 || x == 5 || x == 7)
that's just worse, longer, more bug-prone, less easy to read, and even a *dumb* compiler as Shedskin is able to turn the first into the second when the array is short.


> Also, IMO, it has no real advantage, why not use std.algorithm.find instead ?

The syntax is worse, I don't like to call a function for something so common and basic. It's like calling a library function to join two strings (and find("hello", "llox") doesn't return a boolean).

Bye,
bearophile


More information about the Digitalmars-d mailing list