Его особенности по сравнению с switch-statement:
1. Он exhaustive - это значит, что компилятор заставит вас обработать все возможные варианты, в отличие от switch-statement
2. Это выражение. Это значит, что результат его выполнения можно положить в переменную.