Проверьте, содержит ли массив элемент в 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