0Pricing
Ruby Academy · Урок

Шаблоны массивов и хешей

Деструктурируйте данные

«Шаблоны массивов и хешей» — бесплатный урок Ruby Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ruby Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ruby Academy содержит 4 уроков всего.

Шаблоны массивов

Шаблон массива сопоставляется по позиции и длине. Каждый шаблон элемента проверяется против соответствующего элемента.

case [1, 2, 3]
in [1, 2, 3]
  puts 'exact match'
end

Связывание элементов массива

Используйте идентификаторы, чтобы сохранить каждую позицию в переменную.

case [10, 20]
in [x, y]
  puts(x + y)
end

Длина имеет значение

По умолчанию шаблон массива требует точного совпадения длины. Шаблон из двух элементов не подойдёт для массива из трёх элементов.

case [1, 2, 3]
in [a, b]
  puts 'two'
in [a, b, c]
  puts 'three'
end

Распаковка остальных элементов

Оператор распаковки *rest сохраняет любое количество оставшихся элементов в массив, делая длину гибкой.

case [1, 2, 3, 4]
in [first, *rest]
  puts(first)
  p rest
end

Распаковка в середине

Оператор распаковки может находиться между фиксированными элементами, чтобы получить начало и конец, игнорируя середину.

case [1, 2, 3, 4, 5]
in [first, *, last]
  puts("#{first} ... #{last}")
end

Шаблоны хэшей

Шаблон хэша сопоставляется по ключам. Он проверяет наличие указанных ключей и соответствие их значений; дополнительные ключи разрешены.

case { name: 'Ada', age: 36 }
in { name: 'Ada' }
  puts 'found Ada'
end

Связывание значений хэша

Сохраните значение, указав для ключа имя привязки. Если записать только ключ, он будет связан с переменной с таким же именем.

case { name: 'Bob', age: 25 }
in { name: String => n, age: Integer => a }
  puts("#{n} is #{a}")
end

Сокращённая привязка ключей

Если не указывать шаблон после ключа, переменная автоматически получает имя этого ключа.

case { city: 'Istanbul' }
in { city: }
  puts(city)
end

Запрет дополнительных ключей

По умолчанию шаблоны хэшей игнорируют дополнительные ключи. Добавьте **nil, чтобы потребовать наличия только перечисленных ключей.

case { a: 1 }
in { a: 1, **nil }
  puts 'exactly one key'
end

Вложенные шаблоны

Шаблоны можно свободно вкладывать, выполняя деконструкцию глубоких структур в одной ветке.

data = { user: { name: 'Ada', tags: ['admin', 'dev'] } }
case data
in { user: { name:, tags: [first_tag, *] } }
  puts("#{name}: #{first_tag}")
end

Сопоставление разобранных данных JSON

Сопоставление с шаблонами отлично сочетается с разобранными данными JSON или CSV, извлекая именно нужные поля.

require 'json'
resp = JSON.parse('{"status":"ok","items":[1,2,3]}', symbolize_names: true)
case resp
in { status: 'ok', items: }
  puts(items.sum)
end

Быстрая проверка

Будет ли по умолчанию шаблон хэша in { a: 1 } соответствовать хэшу { a: 1, b: 2 }?

Итоги: шаблоны массивов и хэшей

Теперь Вы умеете выполнять деконструкцию коллекций:

  • Шаблоны массивов сопоставляются по позиции и длине
  • *rest сохраняет оставшиеся элементы
  • Шаблоны хэшей сопоставляются по ключу и допускают дополнительные ключи
  • Сокращённая запись { key: } связывает переменные с таким же именем
  • **nil запрещает дополнительные ключи; шаблоны могут быть глубоко вложенными
case { id: 1, items: [9, 8] }
in { items: [head, *] } then puts head
end

Часто задаваемые вопросы

Урок «Шаблоны массивов и хешей» бесплатный?

Да — полный текст урока «Шаблоны массивов и хешей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ruby Academy, подпишись на CoddyKit PRO. Курс Ruby Academy содержит 4 уроков всего.

Чему я научусь в уроке «Шаблоны массивов и хешей»?

Деструктурируйте данные Ты практикуешь Ruby Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Ruby Academy?

Предыдущий опыт не требуется. Ruby Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Шаблоны массивов и хешей»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Ruby Academy?

Да. Каждый урок Ruby Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы case/in
  2. Шаблоны массивов и хешей
  3. Шаблоны find и защитные условия
  4. Практические варианты применения
← Назад к Ruby Academy