Мне просто интересно, если Swift динамичен, как php или static, я имею в виду, могу ли я генерировать классы во время работы приложения?
Является ли Swift динамическим или статическим языком?
Ответ 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 по своей сути статична. Они просто дают вам интерфейс, так что вы можете постепенно перейти к быстрому.