Безопасность типов и подбор(inference) типов

Swift является языком с типовой безопасностью. Типовая безопасность позволяет вам быть точным о типах значений, с которыми работает ваш код. Если кусок кода ожидает строковый тип, вы не сможете по ошибке передать туда число.

Поскольку Swift безопасен, он выполняет проверки типов при компиляции кода и помечает любые несоответствующие типы как ошибки, что позволяет вам ловить их максимально рано при разработке.

Проверка типов позволяет вам избежать ошибок, когда вы работаете с разными типами значений. Однако, это не означает, что вам обязательно объявлять тип каждой константы или переменной — если вы не объявите тип сами, Swift использует подбор(inference) типа для определения подходящего типа. Интерфейс типа позволяет компилятору делать вывод о типе по операциям в вашем коде во время компиляции.

Из-за подбора типа, Swift требует гораздо меньше объявлений, чем языки типа С или Objective-C. Константы и переменные по прежнему явно типизированы, но большинство работы по определению типа сделано за вас.

Подбор типа особенно полезен, когда вы объявляете константу или переменную с начальным значением — это часто делается с помощью присвоения литерального значения (литерала) константе или переменной в момент ее объявления. Литерал — это просто значение, которое появляется в вашем коде, например 42 или 3.14159.

Например, если вы присваиваете литерал 42 новой константе без объявления ее типа, Swift автоматически догадывается, что тип вашей константы — Int, поскольку вы инициализируете ее числом, похожим на целое число:

Точно так же, если вы не указываете тип для литерала с плавающей точкой, Swift предположит, что вы хотите использовать тип Double:

Swift всегда выбирает Double, а не Float, если вы не указываете тип явно.

Если вы совместите в одной строке целочисленный литерал и литерал с плавающей точкой, тип будет также Double:

Литеральное значение 3 не имеет заданного типа, зато компилятор видит присутствие плавающей точки — поэтому и назначает тип Double.


Просмотренно: 1 540 раз