[Перевод] Сопоставление с образцом на C#: объяснение и примеры

За годы своего развития C# существенно эволюционировал; одна из самых мощных фич языка — это сопоставление с образцом ( pattern matching) . Работая недавно над небольшим хобби-проектом, я наткнулся на такую прекрасную строку кода C#. if (person is not null and { Age: > 18 }) {} Выглядит изящно. Откровенно говоря, она заставила меня призадуматься. Годами я писал проверки на null и свойства-аксессоры классическим образом: if (person != null && person.Age > 18) {} Функционально? Да. Удобочитаемо? Не особо. Безопасно? Спорно, особенно когда код становится сложнее. Я решил создать шорт YouTube об этом современном синтаксисе. Это небольшое забавное напоминание о том, что C# позволяет при помощи сопоставления с образцом комбинировать проверки на null и обращение к свойству в одно условие. Я понятия не имел, что это короткое видео приведёт к гораздо более глубокому исследованию, и покажет мне, насколько полезно и универсально сопоставление с образцом в современном C#. Эта фича повышает читаемость, уменьшает объём бойлерплейта и обеспечивает более выразительную обработку логики. В этой статье мы изучим различные типы образцов, поддерживаемых в C#, их работу и поймём, когда их использовать, на понятных примерах из реального мира.

https://habr.com/ru/articles/907264/

#pattern_matching #сопоставление_с_образцом #csharp

Сопоставление с образцом на C#: объяснение и примеры

За годы своего развития C# существенно эволюционировал; одна из самых мощных фич языка — это сопоставление с образцом ( pattern matching) . Работая недавно над небольшим хобби-проектом, я наткнулся на...

Хабр

🪜 - Creating Decorators in Python
- Hype Doc for your Career Promotion
- Regular Expressions for parsing log files
- Pattern Matching in Python

Latest MyVoD Edition at : http://eepurl.com/i1HFWY
Subscribe at : http://eepurl.com/iu6PFU

#python #Decorators #RegEx #Pattern_Matching #MyVoD #Career #Promotion

[MyVoD] 🪜 Decorators, RegEx, Match Pattern, Job Promotions

Эволюция оператора switch в Java

Наверное, есть только малая часть приложений, код в которых выполняются строго последовательно. Классический Hello World! как раз из таких. В таких случаях говорят, что у выполняющейся программы есть только один поток выполнения - флоу . Однако, подавляющее число приложений меняют свой поток выполнения в зависимости от внешних условий (контекста выполнения, переменных среды, значений пропертей) или внутренних (переменные, значения полей и т.д.). Для таких случаев в Java еще с самой первой версии, как и во остальных языках программирования, есть оператор if-else и его модификации. Давайте рассмотрим пример кода, в котором в зависимости от того, кем является член семьи, он делает какую-то обязанность по дому:

https://habr.com/ru/articles/838890/

#Java #switch #pattern_matching #switch_expressions #switch_statements #ifelseswitch

Эволюция оператора switch в Java

Введение Наверное, есть только малая часть приложений, код в которых выполняются строго последовательно. Классический Hello World! как раз из таких. В таких случаях говорят, что у выполняющейся...

Хабр

[Перевод] Dart 3.1 и ретроспектива программирования в функциональном стиле в Dart 3

Сопоставление шаблонов (pattern matching) и исчерпывающие переключатели (exhaustive switches) объединяются для создания функциональных моделей данных, которые легко сочетаются с объектно-ориентированным ядром Dart. 💪

https://habr.com/ru/articles/802165/

#flutter #dart #oop #algebraic_data_types #sealed_классы #functional_style #pattern #pattern_matching #switch #функциональная_парадигма

Dart 3.1 и ретроспектива программирования в функциональном стиле в Dart 3

Замечательная статья от Марьи Белэнджер о новых функциональных возможностях в dart 3 с ретроспективой на прежние ооп-возможности. Имейте ввиду, не взирая на метку "читается за 10 мин", это средней...

Хабр
The Implementation of Functional Programming Languages
(1987) : Jones, Simon Peyton
isbn: 0-13-453325-9
#calculus #tag #functional_programming #lisp #lambda #pattern_matching #types #my_bibtex
NPCs and Chatterbots with Personality and Emotional Response
(2006) : Vrajitoru, Dana
DOI: https://doi.org/10.1109/CIG.2006.311693
#personality #NPC #chatbot #pattern_matching #logic #ai #my_bibtex
NPCs and Chatterbots with Personality and Emotional Response

Chatterbots are computer programs that simulate intelligent conversation. They are situated between games and toys, as their aim is mostly to be entertaining, but the user doesn't have to follow precise rules when playing with the program. Currently business and educational applications have started to emerge as a further development of the idea of intelligent dialog. For the game industry, they come close to the concept of NPC, or non-player character, and they may become part of making such virtual beings more believable and life-like in the future. In this paper we present application introducing an emotional component designed to enhance the realism of the conversation

The Implementation of Functional Programming Languages
(1987) : Jones, Simon Peyton
isbn: 0-13-453325-9
#pattern_matching #lambda #tag #functional_programming #lisp #calculus #types #my_bibtex
Incremental pattern matching in the viatra model transformation system
(2008) : Bergmann, Gábor et al
DOI: https://doi.org/10.1145/1402947.1402953
#VIATRA #transform #algorithm #pattern_matching #RETE #petri_net #rule #meta #my_bibtex
Incremental pattern matching in the viatra model transformation system | Proceedings of the third international workshop on Graph and model transformations

ACM Conferences
A technique for two-dimensional pattern matching
(1989) : Zhu, Rui Feng Takaoka, Tadao
DOI: https://doi.org/10.1145/66451.66459
#RK #pattern_matching #string_matching #KMP #algorithm #my_bibtex
A technique for two-dimensional pattern matching | Communications of the ACM

By reducing an array matching problem to a string matching problem in a natural way, it is shown that efficient string matching algorithms can be applied to arrays, assuming that a linear preprocessing is made on the text.

Communications of the ACM