Система типов
Scala — уникальный язык, поскольку он статически типизирован, но часто кажется гибким и динамичным. Например, благодаря выводу типов можно писать код без явного указания типов переменных:
val a = 1
val b = 2.0
val c = "Hi!"
Это делает код динамически типизированным. А благодаря новым функциям в Scala 3, таким как объединение типов, также можно писать код, подобный следующему, который кратко выражает, какие значения ожидаются в качестве аргументов и какие типы возвращаются:
def isTruthy(a: Boolean | Int | String): Boolean = ???
def dogCatOrWhatever(): Dog | Plant | Car | Sun = ???
Как видно из примера, при использовании объединения типы необязательно должны иметь общую иерархию, и их по-прежнему можно принимать в качестве аргументов или возвращать из метода.
При разработке приложений такие функции, как вывод типов, используются каждый день, а generics - каждую неделю. При чтении Scaladoc для классов и методов, также необходимо иметь некоторое представление о ковариантности. Использование типов может быть относительно простым, а также обеспечивает большую выразительность, гибкость и контроль для разработчиков библиотек.
Преимущества типов
Языки программирования со статической типизацией предлагают ряд преимуществ, в том числе:
- помощь IDE в обеспечении надежной поддержки
- устранение многих классов потенциальных ошибок во время компиляции
- помощь в рефакторинге
- предоставление надежной документации, которая не может быть нерелевантной, поскольку проверена на тип
Ссылки: