Menu
CoddyTech

Оператор match

Часть раздела Основы путешествия по GDScript на Coddy. Урок 30 из 92.

Инструкция match сравнивает одно значение со списком шаблонов и выполняет блок первого совпавшего шаблона. Она заменяет длинную цепочку if/elif, в которой сравнивается одна и та же переменная:

var day := 3
match day:
	1:
		print("Monday")
	2, 3:
		print("Midweek")
	_:
		print("Other day")

Это выводит Midweek.

  • Каждый шаблон заканчивается двоеточием, а его код имеет отступ на один уровень больше
  • Несколько значений, разделённых запятыми, используют один блок: 2, 3:
  • _ — это подстановочный символ: он соответствует любому значению, поэтому его указывают последним, как else

Выполняется только первый совпавший блок. GDScript не переходит к следующему шаблону, поэтому писать break не нужно. Если ни один шаблон не совпадает и нет _, ничего не выполняется.

Шаблоны тоже могут быть строками:

var weapon := "bow"
match weapon:
	"sword":
		print("Melee")
	"bow", "crossbow":
		print("Ranged")
	_:
		print("Unknown")
challenge icon

Задание

Легко

Переменная season хранит название времени года. Напиши оператор match, который выводит занятие для этого времени года:

  • "Spring": выведи Go hiking
  • "Summer": выведи Go swimming
  • "Fall" или "Autumn": выведи Go apple picking (один шаблон с обоими значениями)
  • "Winter": выведи Go skiing
  • Любое другое значение: выведи Stay home

Напиши все варианты. Если season задано значением "Autumn", вывод будет таким:

Go apple picking

Попробуйте сами

extends Node

func _ready():
	var season := "Autumn"
	# Напишите оператор match ниже
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript