Hello, dear Reader! I apologize for a such loud title of the article, but you should know how it's important for me to engage the readers to discussion. Not so long time ago, I decided to systemize my knowledge of object oriented programming in Scala. That was awesome idea! And now I want to share with you all mini-topics which I underlined as important, but many developers forget about them.

Today I want to write about a dream of every Java developer - pattern matching. While a switch statement works only with limited number of types, including primitive values, strings and enums, the pattern matching feels confident with almost any argument type. I'm going to demonstrate a batch of examples where pattern matching is useful.

I enrolled to Functional Programming in Scala specialization on Coursera. It consists of 5 courses which will take around 180 days. First course in the specialization is Functional Programming Principles in Scala. I already completed the first week and learned some stuff about recursive functions. So It's time to share some knowledge.

That's not a secret that Scala is very popular programming language in BigData industry. And you may heard before that Scala is a data-centric programming language. This means not more, that with its help you can work with a data more easier comparing with other languages. Important roles in this play two Scala features: case classes and case objects.

For a long time I couldn't understand currying functions in Scala and how they work. That was really horrible! Because occasionally I met the currying functions in the code and wasted too much time to read them. So finally I decided to learn how it works and where could be applied.