Pattern matching - очень мощный инструмент, благодаря которому мы можем добиться высокой гибкости и краткости кода, но при его использовании стоит помнить пару ньюансов. Каких? Сейчас расскажу! Если сказать в двух словах, что такое pattern matching, - это switch-case на стероидах, способный работать с множеством различных типов и параметров, например: def patt(a: Any) = a match {
case _:String => println("String")
case n:Number => println(n)
case _ => println("Smth else")
}
patt(2)
patt("Valera")
patt(new Object) Используя ключевое слово match мы применяем матчинг внутри функции patt на входящий параметр "а", как можно заметить, "а:Any", а это значит, что в качестве аргумента может быть любой обьект(см. иерархия типов Scala), и далее мы говорим "case _:String", что означает "если параметр - стринга - то делай =>это". Выглядит довольно просто, не так ли? Последней строкой "case _ =>" мы даём знать, что "если нет подходящего из каких-либо прошлых кейсов, то в крайнем случае делай