Основы 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'
endcase/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)
endNoMatchingPatternError
Если ни одна ветка 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 — локальная установка не требуется.
Все уроки этого курса
- Основы case/in
- Шаблоны массивов и хешей
- Шаблоны find и защитные условия
- Практические варианты применения