Why 'in' works only for assoc arrays?
Steven Schveighoffer
schveiguy at gmail.com
Sat Dec 28 04:51:09 UTC 2024
On Friday, 27 December 2024 at 19:17:13 UTC, JN wrote:
> Why not make 'in' work for arrays (and strings also)?
>
> ```
> int[string] phonebook;
> if ("John" in phonebook) // works
>
> int[] numbers;
> if (3 in numbers) // doesn't work, compiler recommends
> std.algorithm.find
>
> string buildLog;
> if ("build error" in buildLog) // doesn't work, compiler
> recommends std.algorithm.find
> ```
>
> Good thing that compiler recommends what to use instead, but
> why not just make it work for any container?
Because `in` on associative arrays is a fast operation (O(1)).
On an array, searching for a value is a linear operation.
And Ali is right, really, you are talking about keys vs. values.
For example, this doesn't work:
```
int[string] phonebook;
if(5551212 in phonebook) // error
```
which is the equivalent operation you are looking for.
-Steve
More information about the Digitalmars-d-learn
mailing list