Співставлення значень
Ключове слово match
дозволяє зіставити значення з одним або декількома шаблонами. Порівняння відбуваються зверху вниз, і виграє перший збіг.
Шаблони можуть бути простими значеннями, подібно до switch
у C та C++:
Шаблон _
- це шаблон підстановки, який відповідає будь-якому значенню. Вирази повинні бути вичерпними, тобто охоплювати всі можливі варіанти, тому _
часто використовується як остаточний всеохоплюючий випадок.
Match можна використовувати як вираз. Як і у випадку з if
, кожна гілка зіставлення повинно мати однаковий тип. Тип - це останній вираз у блоці, якщо такий є. У наведеному вище прикладі тип ()
.
Змінна у шаблоні (у цьому прикладі - key
) створить прив’язку, яку можна використовувати у гілці зіставлення.
Запобіжник зіставлення призводить до гілці зіставлення, тільки якщо умова істинна.
Speaker Notes
This slide should take about 10 minutes.
Ключові моменти:
-
Ви можете вказати, як деякі конкретні символи використовуються в шаблоні
|
якor
..
може розширюватися настільки, наскільки це потрібно1..=5
представляє включний діапазон_
- символ підстановки
-
Запобіжники зіставлення як окрема функція синтаксису є важливою та необхідною, коли ми хочемо стисло висловити більш складні ідеї, ніж це дозволили б самі шаблони.
-
Це не те саме, що окремий вираз
if
всередині гілкі зіставлення. Виразif
всередині блоку розгалуження (після=>
) виникає після вибору гілкі зіставлення. Невиконання умовиif
всередині цього блоку не призведе до розгляду інших частин вихідного виразуmatch
. -
Умова, визначена в запобіжнику, застосовується до кожного виразу в шаблоні з
|
.
Більше інформації для вивчення
-
Ще одним елементом синтаксису шаблону, який ви можете показати учням, є синтаксис
@
, який прив’язує частину шаблону до змінної. Наприклад:У цьому прикладі
inner
має значення 123, яке він витягнув зOption
за допомогою деструктуризації,outer
перехоплює весь виразSome(inner)
, тому він містить повний виразOption::Some(123)
. Це рідко використовується, але може бути корисним у більш складних шаблонах.