Сопоставление с образцом (pattern matching) — сильный механизм языков программирования, который, к сожалению, встречается не так часто. Причём, как в коде разработчиков, так и в поддержке со стороны самого языка.
Разработчики на функциональных языках используют этот механизм довольно часто, потому что у них вообще многое определяется статически через правильный подход к системе типов. Разработчики же на императивных языках очень любят огромные многоуровневые ветвления. Есть даже такое понятие «Спагетти-код» — раньше его применяли к коду, перегруженному операторами перехода, но в современном виде это скорее об избытке операторов условия.
Pattern matching позволяет накладывать на объекты некоторый трафарет и смотреть, попадают ли они под него. Это не только выглядит лаконичнее и короче, чем дерево условий, но ещё и понятнее с точки зрения восприятия человеком: вот у нас заказ содержит более 10 элементов и при этом стоит более 1000 долларов, значит делаем на него скидку 10 центов. При этом трафарет работает как сортировщик монеток: самая маленькая проваливается в первый паз, следующая по размеру в следующий итд, применение условий идёт сверху вниз. Есть и неявный плюс: такой подход автоматически провоцирует разработчиков проводить проверку на null. Ведь null не может подходить под трафарет «содержит более 10 товаров».
К счастью, в C# этот механизм в последних версиях активно развивают и совершенствуют. И это одно из многочисленных преимуществ C# над Java.
#dev
#Cile🇨🇱
#Parlamentari
#CameradeiDeputati
Risultati parziali.Seggi.
Voti scrutinati: 99,6%.
🟥 Unità per il Cile (#UpCh|Sinistra): 61
🟦 Cambiamento per il Cile (#CpCh; comprende #PRCh|Estrema destra ultraconservatrice, #PSC|Estrema destra ultraconservatrice, #PNL|Estrema destra libertaria): 42
🟦 Cile Grande e Unito (#ChGU|Destra liberal-conservatrice): 34
⬛ Partito della Gente (#PDG|Destra populista): 14
Altri: 4
@TuttoElezioni
#Cile🇨🇱
#Presidenziali
Risultati finali.
Voti scrutinati: 100%.
Affluenza: 85,26%.
🟥 Jeannette #Jara (#UpCh|Sinistra): 26,8%
🟦 José Antonio #Kast (#PRCh|Estrema destra ultraconservatrice): 23,9%
⬛️ Franco #Parisi (#PDG|Destra populista): 19,7%
🟧 Johannes #Kaiser (#PNL|Estrema destra libertaria): 13,9%
🟦 Evelyn #Matthei (#ChGU|Destra liberal-conservatrice): 12,5%
⬜️ Harold #MayneNicholls (Ind.): 1,3%
❗️Necessario un turno di ballottaggio tra Jeannette Jara e José Antonio Kast.
@TuttoElezioni
#Elezioni#Cile#Presidenziali
Risultati definitivi:
Jeannette #Jara (#PCCh|Sinistra): 26,85%
José Antonio #Kast (#PLR|Estrema destra pinochetista): 23,92%
Franco #Parisi (#PDG|Centro-destra populista antisistema): 19,71%
Johannes #Kaiser (#PNL|Estrema destra libertaria): 13,94%
Evelyn #Matthei (#UDI|Destra): 12,46%
Harold #MayneNicholls: 1,26%
Marco "ME-O" #EnríquezOminami (supp. #PH|Sinistra umanista): 1,2%
Eduardo #Artés: 0,66%
Jeannette Jara e José Antonio Kast avanzano al secondo turno.
In foto, la mappa del voto.
@OsservatorioEsteri