Проверьте, содержит ли массив элемент в D
для ассоциативных массивов мы можем написать
if( elem in array) { .. }
что мы пишем для простого массива?
Я хочу написать подтверждение, например.
enforce(input in [10,20,40]);
Ответы
Ответ 1
in
грустно не работает с массивом. Вы должны использовать canFind
или search
, определенные в std.algorithm
http://dlang.org/phobos/std_algorithm.html. Поскольку вы только хотите знать, присутствует ли он, а не там, где это возможно, canFind
- правильный инструмент.
import std.algorithm: canFind;
if (my_array.canFind(42)) { stuff }
Ответ 2
В дополнение к canFind, также есть countUntil, который предоставит вам индекс первого вхождения.
Обратите внимание, что ключевое слово D "in" ищет ключи ассоциативного массива, а не его значения:
string[string] array = [
"foo" : "bar"
];
writeln(("foo" in array) != null); // true
writeln(("bar" in array) != null); // false