Проверьте, содержит ли массив элемент в D

Для ассоциативных массивов мы можем написать

if( elem in array) { .. }

что мы пишем для простого массива? Я хочу написать подтверждение, например

enforce(input in [10,20,40]);

2 ответа

Решение

in к сожалению, не работает на массиве. Вы должны использовать canFind или же search определяется в std.algorithm http://dlang.org/phobos/std_algorithm.html. Поскольку вы хотите знать только, присутствует ли он, а не там, где он есть, canFind это правильный инструмент.

import std.algorithm: canFind;

if (my_array.canFind(42)) { stuff }

В дополнение к canFind, есть также countUntil, который даст вам индекс первого вхождения.

Обратите внимание, что ключевое слово "in" D ищет ключи ассоциативного массива, а не его значения:

string[string] array = [
    "foo" : "bar"
];

writeln(("foo" in array) != null); // true
writeln(("bar" in array) != null); // false
Другие вопросы по тегам