Is str ~ regex the root of all evil, or the leaf of all good?
Lionello Lunesu
lio at lunesu.remove.com
Thu Feb 19 16:04:59 PST 2009
Andrei Alexandrescu wrote:
> Michel Fortin wrote:
>> That seems reasonable, although if we support it it shouldn't be
>> limited to regular expressions for coherency reasons. For instance:
>>
>> foreach(e; "co" in "conoco")
>> writeln(e);
>>
>> should work too. If we can't make that work in the most simple case,
>> then I'd say it shouldn't with the more complicated ones either.
>
> Well I'm a bit unhappy about that one. At least in current D and to
> yours truly, "in" means "fast membership lookup". The use above is
> linear lookup. I'm not saying that's bad, but I prefer the non-diluted
> semantics. For linear search, there's always find().
At least, "in" refers to a look-up, whereas "~" refers to concatenation,
which has nothing in common with the regex matching.
Furthermore, we can't make any complexity guarantees for operators; this
always depends on the data structure you use the operator on. And, if
I'm not mistaken, "in" is only used by the associated array at the
moment. It's a "fast look-up" because of the associated array, but it
doesn't have to be.
(Similarly, to me, ~ and ~= feel slow, O(n), but that shouldn't keep us
from using it with other data structures that can do a similar
concat/append operation with lower complexity.)
L.
More information about the Digitalmars-d
mailing list