Зіставляння із взірцем або зіставлення із шаблоном (англ. pattern matching) — метод аналізу та опрацювання структур даних у мовах програмування, заснований на виконанні певних інструкцій залежно від збігу досліджуваного значення з тим чи іншим взірцем (шаблоном), яким може бути константа, предикат, тип даних або інша конструкція, підтримувана мовою.
Зазвичай є можливість задати більше одного взірця та пов'язаної з ним дії.
Зіставляння із взірцем часто зустрічається у функційних мовах програмування, наприклад, мовах сімейства ML та Haskell, зокрема у вигляді вартових виразів.
Зразки послідовностей (наприклад, текстовий рядок) можна зіставляти з регулярними виразами.
Порівняння з точним значенням
Найпростішим варіантом є зіставляння з константою. У цьому разі зіставляння із взірцем еквівалентне умовному оператору або конструкції switch
(case
) в імперативних мовах.
Розглянемо, наприклад, обчислення логічного заперечення.
В OCaml :
let neg x = match x with | false -> true | true -> false ;;
Тут значення після символа |
є взірцями, а вирази після ->
обчислюються в разі збігу аргументу x
з одним із взірців. Той самий приклад з використанням умовного оператора:
let neg x = if x = false then true else false ;;
Використання внутрішньої структури об'єкта
Обчислення суми списку:
let rec sum l = match l with | [] -> 0 | x :: xs -> x + (sum xs) ;;
У цьому прикладі аргумент функції sum
зіставляється зі значенням «порожній список» або із взірцем «голова :: хвіст» (де ::
— оператор додавання елемента на початок списку).
Алгебричні типи даних
Як взірець може застосовуватися конструктор значення типу:
type animal = Dog of string | Cat of string ;; let say x = match x with | Dog (x) -> x ^ "says 'woof'" | Cat (x) -> x ^ "says 'meow'" ;;
Зіставляння з рядком
Мови з розвиненими засобами опрацювання тексту, такі як AWK та SNOBOL, підтримують зіставляння з регулярним виразом.
Приклад на AWK — підрахунок кількості входжень слів foo або bar:
/foo|bar/ { foobar++ } END { print foobar }
В іншому мовному розділі є повніша стаття Pattern matching(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської.
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Zistavlyannya iz vzircem abo zistavlennya iz shablonom angl pattern matching metod analizu ta opracyuvannya struktur danih u movah programuvannya zasnovanij na vikonanni pevnih instrukcij zalezhno vid zbigu doslidzhuvanogo znachennya z tim chi inshim vzircem shablonom yakim mozhe buti konstanta predikat tip danih abo insha konstrukciya pidtrimuvana movoyu Zazvichaj ye mozhlivist zadati bilshe odnogo vzircya ta pov yazanoyi z nim diyi Zistavlyannya iz vzircem chasto zustrichayetsya u funkcijnih movah programuvannya napriklad movah simejstva ML ta Haskell zokrema u viglyadi vartovih viraziv Zrazki poslidovnostej napriklad tekstovij ryadok mozhna zistavlyati z regulyarnimi virazami Porivnyannya z tochnim znachennyamNajprostishim variantom ye zistavlyannya z konstantoyu U comu razi zistavlyannya iz vzircem ekvivalentne umovnomu operatoru abo konstrukciyi switch case v imperativnih movah Rozglyanemo napriklad obchislennya logichnogo zaperechennya V OCaml let neg x match x with false gt true true gt false Tut znachennya pislya simvola ye vzircyami a virazi pislya gt obchislyuyutsya v razi zbigu argumentu x z odnim iz vzirciv Toj samij priklad z vikoristannyam umovnogo operatora let neg x if x false then true else false Vikoristannya vnutrishnoyi strukturi ob yektaObchislennya sumi spisku let rec sum l match l with gt 0 x xs gt x sum xs U comu prikladi argument funkciyi sum zistavlyayetsya zi znachennyam porozhnij spisok abo iz vzircem golova hvist de operator dodavannya elementa na pochatok spisku Algebrichni tipi danihDokladnishe Algebrichnij tip danih Yak vzirec mozhe zastosovuvatisya konstruktor znachennya tipu type animal Dog of string Cat of string let say x match x with Dog x gt x says woof Cat x gt x says meow Zistavlyannya z ryadkomMovi z rozvinenimi zasobami opracyuvannya tekstu taki yak AWK ta SNOBOL pidtrimuyut zistavlyannya z regulyarnim virazom Priklad na AWK pidrahunok kilkosti vhodzhen sliv foo abo bar foo bar foobar END print foobar V inshomu movnomu rozdili ye povnisha stattya Pattern matching angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad