Руководство разработчика

Типы данных

В программах имеется возможность использовать данные разных типов. Поддерживается объявление переменной любого возможного типа. Проверка совместимости типов выполняется как на этапе компиляции, так и на этапе выполнения. Как компромис между гибкостью системы типов и возможностью проверки на этапе компиляции используются различные виды неопределенного типа.

Поддерживается несколько разновидностей типов:

Стандартные типы соответствуют простым значениям – числам, строкам и т.п. Стандартные типы всегда объявлены в программе и для их использования не требуется каких-либо дополнительных действий.

Объектные и контейнерные типы позволяют агрегировать данные в сложные структуры. Объектные типы совместно с интерфейсами обеспечивают механизмы абстракции, с помощью которых можно описывать сложные взаимодействия.

Объектные типы и интерфейсы явно объявляются в исходном тексте или модулях.

Контейнерные типы и типы функций объявляются в программе неявно при ее компиляции. Объявление переменной контейнерного типа, функции или метода приводит к неявному объявлению соответствующего типа. Так, если объявлены две функции с одинаковым списком параметров и типом результата, то им будет соответствовать один тип функции. Переменной такого типа можно будет установить в качестве значения как ссылку на первую функцию, так и на вторую.

Инвариантный тип используется в качестве типа параметров вызывающего и вызываемого алгоритмов.

Для задания имен неявным типам можно воспользоваться синонимами типов. Синонимы можно также использовать для объявления альтернативных имен любых типов.

На этапе компиляции допускается явное уточнение неопределенного типа. Этим программист указывает компилятору, что выражение должно интерпретироваться, как имеющее заданный тип. Например, уточнение объектного типа позволяет обращаться к соответствующим полям и методам.

Также на этапе компиляции может применяться явное использование типов. Явное использование включает в программу описание типа даже в том случае, когда компилятор не нашел его использования. Такая ситуация может возникать при использовании значений неопределенных типов, получаемых извне. Например, при получении параметров программы.

Наконец, для случаев, когда типы значений неизвестны вплоть до времени выполнения программы, может применяться сравнение типов.


См. также: