Сопоставление с образцом (pattern matching) — сильный механизм языков программирования, который, к сожалению, встречается не так часто. Причём, как в коде разработчиков, так и в поддержке со стороны самого языка.
Разработчики на функциональных языках используют этот механизм довольно часто, потому что у них вообще многое определяется статически через правильный подход к системе типов. Разработчики же на императивных языках очень любят огромные многоуровневые ветвления. Есть даже такое понятие «Спагетти-код» — раньше его применяли к коду, перегруженному операторами перехода, но в современном виде это скорее об избытке операторов условия.
Pattern matching позволяет накладывать на объекты некоторый трафарет и смотреть, попадают ли они под него. Это не только выглядит лаконичнее и короче, чем дерево условий, но ещё и понятнее с точки зрения восприятия человеком: вот у нас заказ содержит более 10 элементов и при этом стоит более 1000 долларов, значит делаем на него скидку 10 центов. При этом трафарет работает как сортировщик монеток: самая маленькая проваливается в первый паз, следующая по размеру в следующий итд, применение условий идёт сверху вниз. Есть и неявный плюс: такой подход автоматически провоцирует разработчиков проводить проверку на null. Ведь null не может подходить под трафарет «содержит более 10 товаров».
К счастью, в C# этот механизм в последних версиях активно развивают и совершенствуют. И это одно из многочисленных преимуществ C# над Java.
#dev
#Italia
#Volt|G/EFA annuncia la sua partecipazione alle primarie della coalizione progressista: “Ci saremo per cambiare le regole del gioco. Serve una squadra, non leader soli al comando”.
Volt ha inoltre annunciato l’inizio di un percorso di ascolto sul territorio, per incidere sul programma di coalizione, mettendo al centro la crisi abitativa, la transizione energetica e azioni per ridurre la precarietà.
Tra le proposte anche quella di modificare il sistema di voto delle primarie, introducendo il voto supplementare (dove l’elettore indica una prima e una seconda scelta per garantire una convergenza immediata sul candidato più condiviso) o il sistema del STV.
@OsservatorioItaliano
#Italia
Nota #Volt|G/EFA: "Riteniamo uno squallido teatrino l'intervista di #Lavrov a Zona Bianca, su Rete4. Il fatto che venga permesso al ministro degli esteri russo di divulgare la propaganda russa in prima serata è squalificante per l'intero giornalismo televisivo italiano."
@UltimoraPolitics
#Italia
Gianluca #Guerra (#Volt|G/EFA): "Ius Scholae salta da calendario della Camera per colpa della Lega che ancora una volta si dimostra capace di raggiungere risultati solo quando si devono negare diritti civili e umani. È anche chiaro che questa maggioranza non potrà mai portare progresso sociale."
@UltimoraPolitics
#Italia#UE
Gianluca #Guerra (#Volt|G/EFA): "Con le dimissioni di Fabrice Leggeri, forse finalmente capiremo che c'è qualcosa che non va con Frontex e si inizierà ad agire.
Pushback illegali, mancata trasparenza sugli atti, procedure forzate. Tutto questo giocando con la vita di migliaia di esseri umani."
@UltimoraPolitics
#UE
Francesca Romana #DAntuono, copresidente #Volt|G/EFA: "Vogliamo creare una rivoluzione nel Parlamento Europeo: 25 membri di Volt da almeno 7 paesi invaderanno il Parlamento. Persone di ogni genere, etnia, origine, orientamento sessuale, disabilità o background sociale: insieme aggiusteremo l'UE."
@UltimoraPolitics
#UE
Francesca Romana #DAntuono, copresidente #Volt|G/EFA: "Putin ha invaso l'Ucraina, uccidendo civili innocenti e commettendo indimenticabili crimini contro l'umanità. Non staremo a guardare l'invasione."
@UltimoraPolitics
#UE#Ucraina
🇺🇦 Mykhaylo #Pobigay (#Volt|G/EFA): "L'Unione Europea ha bisogno di più integrazione, di nuovi membri e di un esercito europeo."
@UltimoraPolitics