Шаблоны массивов
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 8 из 78.
Шаблон массива записывается как литерал массива. Он сопоставляется с массивом того же размера, элементы которого сопоставляются по одному. Каждый элемент шаблона может быть литералом, _ или привязкой:
var point := [0, 7]
match point:
[0, 0]:
print("Origin")
[0, var y]:
print("On the y-axis at ", y)
[var x, var y]:
print("Point ", x, ", ", y)On the y-axis at 7Размер должен совпадать: [var x, var y] не соответствует [1, 2, 3]. Помести .. последним элементом, чтобы разрешить любое количество дополнительных элементов (в том числе ноль), а для пустого массива напиши []:
var cmd := ["give", "sword", "Ana"]
match cmd:
[]:
print("Nothing typed")
["give", var item, ..]:
print("Giving ", item)Giving swordЗащитные условия работают и с шаблонами массивов: [var a, var b] when a == b: соответствует двум одинаковым элементам.
Шаблоны массивов соответствуют только типу Array. Возвращаемый split() тип PackedStringArray им никогда не соответствует. Сохрани результат в переменной, объявленной как Array, что преобразует его:
var words: Array = "go north".split(" ")
match words:
["go", var dir]:
print("Heading ", dir)Heading northЗадание
ЛегкоПрограмма считывает точку, записанную в виде x,y, и сохраняет её в массиве point как два целых числа (это уже написано). Используй оператор match с шаблонами массивов, чтобы вывести, где находится точка, применяя первое подходящее правило:
- Оба значения равны
0:Origin xравен0:On the y-axis at y=, за которым следуетyyравен0:On the x-axis at x=, за которым следуетxxиyравны:On the diagonal at, за которым следует значение- В любом другом случае:
Point at (x, y)с двумя значениями
Для входных данных 0,5 результат будет таким:
On the y-axis at y=5Для входных данных 2,7 результат будет таким:
Point at (2, 7)Попробуйте сами
extends Node
func _ready():
var parts := OS.read_string_from_stdin().split(",")
var point := [int(parts[0]), int(parts[1])]
# Сопоставить point с шаблонами массивов
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript