Шаблон и условие — по очереди
1️⃣Изначально status содержит строку old. Конструкция match получает для проверки строку queued.
2️⃣В записи case status имя status является захватывающим шаблоном. Оно не сравнивается с прежним значением old: шаблон успешно связывает status со строкой queued.
3️⃣Только после этого проверяется условие status == "done". Оно ложно, поэтому тело первой ветки не выбирается. Следующий case _ подходит и печатает fallback.
4️⃣Ложное условие не отменяет уже выполненное связывание имени. После match переменная status содержит queued, и последний print выводит её. Результат: fallback, затем queued.
Почему это важно
Если использовать в шаблоне имя существующей переменной, её значение можно заменить ещё до проверки дополнительного условия. Для сравнения с конкретной строкой пишите строковый литерал, например case "done". Для захваченного значения удобно выбрать отдельное имя, чтобы не потерять прежний статус.
Post #4921
92