Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Диагностика

    TPZ5026 · Образец let, который может не совпасть

    Образец let может не совпасть со значением во время выполнения.

    Диагностика и причина

    Ссылка

    Образец let, который может не совпасть

    Семейство
    topaz
    Этап
    check
    Код
    TPZ5026

    Причина и условия

    Образец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.

    Действия

    Обработайте оба исхода с помощью if let или match либо выберите образец, который всегда совпадает.

    Фаза компилятора check.

    Пояснение компилятора

    Образец let может не совпасть со значением во время выполнения.

    В шаблонах сообщений маркер ⟨value⟩ обозначает текст, вычисленный для программы, вызвавшей сообщение.

    refutable pattern in `let`: it does not match every value of the type — use `if let` to handle the non-matching case

    Образец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.

    Правилоdiagnostics.tpz5026.p5.rule

    Образец let, который может не совпасть

    Образец деструктуризации в let должен совпадать со всеми значениями типа выражения инициализации. Если образец конструктора может не совпасть, используйте match или if let.

    Действия

    Ссылка

    Обработайте оба исхода с помощью if let или match либо выберите образец, который всегда совпадает.

    Воспроизведение и проверка

    Ссылка

    Отклонённая программа

    Ссылка
    example.tpzОтклонённая программаОткрыть песочницу →
    1. let maybe: Option<int> = None()
    2. let Some(value) = maybe
    Ожидаемый выводНенулевой код завершения
    Нет стандартного вывода.
    $ topaz check example.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Этап отклонения check. Ненулевой код завершения.

    • TPZ5026 →

      diagnostics-refutable-let-pattern at example.tpz:2:5

    Исправленная программа

    Ссылка
    example.tpzИсправленная программа
    1. let maybe: Option<int> = None()
    2. let value: int = match (maybe) {
    3. case Some(number) => number
    4. case None() => 0
    5. }
    Ожидаемый выводКод завершения 0
    $ topaz check example.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Проверка принимает программу. Код завершения 0.

    Меню

    Загрузка →