openlang

Проверка наличия подходящего элемента в массиве D

для ассоциативных массивов можно так

if (entry in entries) { .. }

а как сделать это с обычным массивом? Мне нужно выражение для проверки, например

enforce(candidate in [12,24,48]);
Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

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

    import std.algorithm: canFind;
    
    if (items.canFind(36)) { work }
    Переведено с английскогоПоказать оригинал
  2. Ссылка на ответ

    Кроме canFind, существует countUntil, возвращающий позицию первого появления элемента.

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

    string[string] entries = [
        "left" : "right"
    ];
    
    writeln(("left" in entries) != null); // true
    writeln(("right" in entries) != null); // false
    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Solc 0.7.0 отклоняет создание struct с полем mapping

    Через npm у меня установлен Solc версии 0.7.0. Создание Struct с mapping внутри выдаёт сообщение: "Struct containing a (neste…

    Ответы 2Последняя активность solidity
  2. rows.Next вернул false, а ошибка потерялась

    Маленькая утилита на database/sql вернула половину списка. Без ошибки. Код такой. Контекст с дедлайном. Дедлайн истёк посреди…

    Ответы 3Последняя активность sqlgo
  3. Частичный индекс и параметр в условии WHERE

    Пишу небольшой job runner на Go для учебного проекта. Стек: pgx v5 через database/sql, локально Postgres 16, таблица jobs при…

    Ответы 10Последняя активность sqlgo