Сопоставление с переменными
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 6 из 78.
В уроке Оператор match каждый шаблон был литеральным значением, например 1: или "bow":. Шаблоном также может быть константа или переменная: match сравнивает значение с тем, что хранится в этом имени в момент выполнения строки:
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!Второй новый шаблон — это шаблон связывания: var, за которым следует новое имя. Как и _, он соответствует любому значению, а также сохраняет это значение в новой переменной, которую можно использовать внутри её блока:
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is lockedШаблон связывания наиболее полезен, когда вы сопоставляете результат выражения, у которого нет собственного имени:
var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
12:
print("Double six!")
var total:
print("You rolled ", total)You rolled 10Шаблон связывания соответствует чему угодно, поэтому он идет последним, как _. Его имя должно быть новым: var level: во втором примере было бы ошибкой, потому что level уже существует. Он также не может находиться в одной строке с другими шаблонами, разделенными запятыми.
match строго сравнивает типы: строка "5" не соответствует шаблону 5, как и число с плавающей точкой 5.0. Преобразуй текст, считанный из ввода, с помощью int(), прежде чем сравнивать его с числами.
Задание
ЛегкоНапиши проверку для угадывания числа. Константа SECRET хранит секретное число, а программа считывает догадку игрока как целое число в guess.
Напиши оператор match для guess с тремя шаблонами:
- Константа
SECRET: выведиCorrect! 0: выведиYou gave up.- Шаблон связывания для любой другой догадки: выведи догадку, а затем
is not the number.
Для ввода 17 вывод будет таким:
17 is not the number.Попробуйте сами
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# Напишите оператор match ниже
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript