Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
November 22, 2017 Having "in" for arrays | ||||
---|---|---|---|---|
| ||||
Why doesn't D have a in keyword for arrays? The docs explains that you can use in only for associative arrays but I don't see the reasons for such decision. Example code: void main() { auto v = ["r", "i", "o"]; assert ("r" in v); } That currently fails: main.d(4): Error: incompatible types for (("r") in (v)): 'string' and 'string[]' |
November 22, 2017 Re: Having "in" for arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to Fra Mecca | On Wednesday, November 22, 2017 08:03:50 Fra Mecca via Digitalmars-d-learn wrote:
> Why doesn't D have a in keyword for arrays?
>
> The docs explains that you can use in only for associative arrays but I don't see the reasons for such decision.
>
>
> Example code:
>
> void main()
> {
> auto v = ["r", "i", "o"];
> assert ("r" in v);
> }
>
>
> That currently fails:
> main.d(4): Error: incompatible types for (("r") in (v)): 'string'
> and 'string[]'
in is supposed to be at worst O(log n), whereas to do the operation for an array would be O(n). If you want to search for a specific element in an array than use std.algorithm.find or std.algorithm.canFind.
- Jonathan M Davis
|
November 22, 2017 Re: Having "in" for arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to Fra Mecca | On Wednesday, 22 November 2017 at 08:03:50 UTC, Fra Mecca wrote:
> void main()
> {
> auto v = ["r", "i", "o"];
> assert ("r" in v);
> }
Also note that even if it wereimplemented, you search for 'r' instead of "r". "r" is a string, but you would want to search for a char.
|
November 22, 2017 Re: Having "in" for arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dukc | On Wednesday, 22 November 2017 at 09:36:43 UTC, Dukc wrote:
> On Wednesday, 22 November 2017 at 08:03:50 UTC, Fra Mecca wrote:
>> void main()
>> {
>> auto v = ["r", "i", "o"];
>> assert ("r" in v);
>> }
>
> Also note that even if it wereimplemented, you search for 'r' instead of "r". "r" is a string, but you would want to search for a char.
Isn't 'v' an array of strings? If it were a array of chars, then the search would be 'r'.
bye,
lobo
|
November 22, 2017 Re: Having "in" for arrays | ||||
---|---|---|---|---|
| ||||
Posted in reply to lobo | On Wednesday, 22 November 2017 at 10:32:48 UTC, lobo wrote:
> On Wednesday, 22 November 2017 at 09:36:43 UTC, Dukc wrote:
>> On Wednesday, 22 November 2017 at 08:03:50 UTC, Fra Mecca wrote:
>>> void main()
>>> {
>>> auto v = ["r", "i", "o"];
>>> assert ("r" in v);
>>> }
>>
>> Also note that even if it wereimplemented, you search for 'r' instead of "r". "r" is a string, but you would want to search for a char.
>
> Isn't 'v' an array of strings? If it were a array of chars, then the search would be 'r'.
>
> bye,
> lobo
Oops, you're correct. My bad.
|
Copyright © 1999-2021 by the D Language Foundation