Типизация манифеста
Эта статья в значительной степени или полностью опирается на один источник . ( март 2024 г. ) |
Типовые системы |
---|
Общие понятия |
Основные категории |
Второстепенные категории |
В информатике типизация манифеста — это явная идентификация программистом типа каждой . объявляемой переменной Например: если переменная X будет хранить целые числа, ее тип должен быть объявлен как целое число. Термин «типизация манифеста» часто используется вместе с термином « скрытая типизация» для описания разницы между статическим идентификатором типа членством объекта во время компиляции и его время выполнения во .
Напротив, некоторые языки программирования используют неявную типизацию (также называемую выводом типа ), где тип выводится из контекста во время компиляции, или допускают динамическую типизацию , при которой переменная только что объявляется и ей может быть присвоено значение любого типа во время выполнения.
Примеры [ править ]
Рассмотрим следующий пример, написанный на языке программирования C :
#include <stdio.h>
int main ( void ) {
char s [] = "Test String" ;
плавающий х = 0,0f ;
интервал у = 0 ;
printf ( "Привет, мир! \n " );
вернуть 0 ;
}
Переменные s , x и y были объявлены как массив символов, число с плавающей запятой и целое число соответственно. Система типов отклоняет во время компиляции такие ошибки, как попытки сложения s и x . Начиная с C23 , вывод типа можно использовать в C с помощью ключевого слова auto
. [1] Используя эту функцию, предыдущий пример мог бы выглядеть следующим образом:
#include <stdio.h>
int main ( void ) {
char s [] = "Test String" ;
// auto s = "Тестовая строка"; вместо этого эквивалентно char* s = "Test String";
авто х = 0,0f ;
авто у = 0 ;
printf ( "Привет, мир! \n " );
вернуть 0 ;
}
во втором примере, в Standard ML типы Как и не нужно явно объявлять. Вместо этого тип определяется типом назначенного выражения.
let val s = "Тестовая строка"
val x = 0.0
val y = 0
при печати "Hello, World! \n "
end
В этой программе нет типов манифеста, но компилятор все равно определяет типы string
, real
и int
для них и отверг бы выражение s+x
как ошибка времени компиляции.
Ссылки [ править ]
- ^ «WG14-N3007: Вывод типа для определений объектов» . open-std.org . 10.06.2022. Архивировано из оригинала 24 декабря 2022 года.
Внешние ссылки [ править ]