0Pricing
Ruby Academy · Урок

Основы case/in

Структурное сопоставление

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

Сопоставление с шаблонами

Выражение Ruby case/in выполняет структурное сопоставление с шаблонами: проверяет форму и содержимое данных, а не только равенство. Это мощное улучшение по сравнению с case/when.

case 42
in Integer
  puts 'it is an integer'
end

case/in и case/when

case/when сравнивает с помощью === (в стиле проверки равенства). case/in выполняет деконструкцию значений и может связывать переменные. Используйте in для сопоставления структуры.

case 'hello'
in String => s
  puts "string of length #{s.length}"
end

Сопоставление литералов

Ветка in может сопоставляться с литеральным значением, выполняя точную проверку равенства.

case 3
in 1 then puts 'one'
in 3 then puts 'three'
in _ then puts 'other'
end

Шаблоны типов

Указание класса сопоставляет любое значение этого типа, используя === внутри.

def describe(x)
  case x
  in Integer then 'number'
  in String then 'text'
  in Array then 'list'
  end
end
puts(describe([1, 2]))

Связывание переменных

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

case [1, 2]
in [a, b]
  puts(a + b)
end

Подстановочный символ

Подчёркивание _ сопоставляется с чем угодно, не создавая привязку. Используйте его как универсальный шаблон или чтобы игнорировать позиции.

case 99
in 0 then puts 'zero'
in _ then puts 'something else'
end

Оператор фиксации

Чтобы сопоставить значение существующей переменной, а не создать новую привязку, зафиксируйте его с помощью ^.

expected = 5
case 5
in ^expected
  puts 'matched the pinned value'
end

Альтернативные шаблоны

Объединяйте шаблоны с помощью |, чтобы сопоставить любой из нескольких вариантов в одной ветке.

case 'b'
in 'a' | 'b' | 'c'
  puts 'in the first three letters'
end

Связывание всего результата

Используйте pattern => name, чтобы одновременно проверить шаблон и связать найденное значение с именем.

case 'Ruby'
in String => word
  puts(word.upcase)
end

NoMatchingPatternError

Если ни одна ветка in не подходит и ветки else нет, Ruby вызывает NoMatchingPatternError. Добавьте else, чтобы безопасно обработать остальные случаи.

case 10
in 1 then puts 'one'
else
  puts 'no specific match'
end

Сопоставление в одну строку

Оператор => выполняет однострочное присваивание справа при сопоставлении и вызывает ошибку при неудаче. Оператор in вместо этого возвращает истину или ложь.

result = [1, 2] in [Integer, Integer]
puts result

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

Что произойдёт, если в case/in нет подходящей ветки и нет else?

Итоги: основы case/in

Вы изучили основы структурного сопоставления:

  • case/in сопоставляет структуру, а не только равенство
  • Литералы, шаблоны типов и подстановочный символ _
  • Связывание переменных и оператор фиксации ^
  • Альтернативы с помощью | и pattern => name
  • При отсутствии совпадения вызывается NoMatchingPatternError
case 7
in Integer => n then puts(n * 2)
end

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

Урок «Основы case/in» бесплатный?

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

Чему я научусь в уроке «Основы case/in»?

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

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

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

Сколько времени занимает урок «Основы case/in»?

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

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

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

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

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