stringtranslate.com

Манифест типизации

В информатике явная типизация — это явная идентификация программистом типа каждой объявляемой переменной. Например: если переменная X будет хранить целые числа, то ее тип должен быть объявлен как целое число. Термин «явная типизация» часто используется вместе с термином скрытая типизация для описания разницы между статическим членством объекта во время компиляции и его идентичностью типа во время выполнения .

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

Примеры

Рассмотрим следующий пример, написанный на языке программирования C :

#include <stdio.h> int main ( void ) { char s [] = "Тестовая строка" ; float x = 0.0f ; int y = 0 ;               printf ( "Привет, мир! \n " ); return 0 ; }  

Переменные s , x и y были объявлены как массив символов, число с плавающей точкой и целое число соответственно. Система типов отклоняет на этапе компиляции такие заблуждения, как попытка сложить s и x . Начиная с C23 , вывод типа может использоваться в C с ключевым словом auto. [1] Используя эту возможность, предыдущий пример может стать:

#include <stdio.h> int main ( void ) { char s [] = "Test String" ; // auto s = "Test String"; эквивалентно char* s = "Test String"; auto x = 0.0f ; auto y = 0 ;                 printf ( "Привет, мир! \n " ); return 0 ; }  

Аналогично второму примеру, в Standard ML типы не обязательно должны быть явно объявлены. Вместо этого тип определяется типом назначенного выражения.

let  val  s  =  "Тестовая строка"  val  x  =  0.0  val  y  =  0 in  print  "Hello, World! \n " end

В этой программе нет явных типов, но компилятор все равно выводит типы stringи realдля intних и отклоняет выражение s+xкак ошибку времени компиляции.

Ссылки

  1. ^ "WG14-N3007: Вывод типа для определений объектов". open-std.org . 2022-06-10. Архивировано из оригинала 24 декабря 2022 г.

Внешние ссылки