Подтвердить что ты не робот

Является ли Swift динамическим или статическим языком?

Мне просто интересно, если Swift динамичен, как php или static, я имею в виду, могу ли я генерировать классы во время работы приложения?

4b9b3361

Ответ 1

Он статичен - очень статичен. Компилятор должен иметь всю информацию обо всех классах и функциях во время компиляции. Вы можете "расширить" существующий класс (с extension), но даже тогда вы должны полностью определить во время компиляции, из чего состоит это расширение.

Objective-C является динамическим, и поскольку в реальной жизни вы, вероятно, будете использовать Swift в присутствии Cocoa, вы можете использовать среду выполнения Objective-C для инъекций /swizzle в классе Swift, который подвергается воздействию до Objective-C. Вы можете сделать это, даже если вы говорите на языке Swift. Но сам Swift является статичным и на самом деле явно разработан, чтобы минимизировать или исключить использование динамического динамика Objective-C.

Ответ 2

Быстрое начало, статически типизировано. При использовании с Cocoa вы получаете доступ к библиотеке времени выполнения objective-c, которая дает вам возможность использовать динамические классы, сообщения и все. Это не означает, что сам язык динамически типизирован. Вы можете сделать то же самое с C или любым другим языком, который поддерживает мост до C, используя libobjc.A.dylib.

Ответ 3

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

Итак, java - это язык статического типа, а также язык сильного типа, потому что компилятор не имеет возможности автоматически обнаруживать тип, поэтому он статический и тип сильно ограничен, поэтому он также является языком сильного типа.

И javascript - это язык динамического типа и несильный язык. Поскольку компилятор имеет возможность обнаруживать тип во время выполнения, а тип также строго не ограничен.

Итак, основываясь на приведенных выше примерах, вы можете сказать, что быстрый способ позволяет нам не объявлять тип и оставлять компилятор для определения типа самостоятельно, поэтому swift объявляется официальным официальным языком динамического типа. И это также сильный язык типа, который вы должны использовать строго, когда даже вы не объявляете тип, если компилятор обнаруживает, что он является String, тогда это не какой-либо другой тип.

Надеюсь, что это будет полезно.

Ответ 4

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