Scala 3 — Book

Типы и система типов

Language

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 в обеспечении надежной поддержки
  • устранение многих классов потенциальных ошибок во время компиляции
  • помощь в рефакторинге
  • предоставление надежной документации, которая не может быть нерелевантной, поскольку проверена на тип

Знакомство с особенностями системы типов в Scala

Учитывая это краткое введение, в следующих разделах представлен обзор особенностей системы типов в Scala.

Contributors to this page: