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