Мне просто интересно, если Swift динамичен, как php или static, я имею в виду, могу ли я генерировать классы во время работы приложения?Является ли Swift динамическим или статическим языком?
ответ
Статический - очень статический. Компилятор должен иметь всю информацию обо всех классах и функциях во время компиляции. Вы можете «расширить» существующий класс (с extension
), но даже тогда вы должны полностью определить во время компиляции то, из чего состоит это расширение.
Объектив-C является динамическим, и поскольку в реальной жизни вы, вероятно, будете использовать Swift в присутствии Cocoa, вы можете использовать среду выполнения Objective-C для внедрения/swizzle-методов в классе Swift, который подвергается воздействию Objective-C. Вы можете сделать это, даже если вы говорите на языке Swift. Но Swift сам является статичным и на самом деле явно разработан для минимизации или исключения использования динамизма типа Objective-C.
Я не знаю php, но я знаю Ruby, и вообще я бы сказал, что Свифт - это полная противоположность Руби. Ruby имеет «утиную печать»; У Swift есть строгая компиляция. Ruby определяет свои классы во время выполнения (определения классов сами являются исполняемыми операторами); Swift определяет свои классы во время компиляции. Ruby может открывать класс и вводить методы, которые формируются динамически; Свифт не может. – matt
Как правило, вы никогда не говорите статический язык. Вы можете сказать, что язык статического типа или язык динамического типа, и вы также можете говорить о сильном типе или нет.
Таким образом, Java представляет собой язык статического типа, а также язык сильного типа, поскольку компилятор не имеет возможности автоматически определять тип, поэтому он является статическим, а тип сильно ограничен, поэтому он также является сильным типом.
И javascript - это язык динамического типа и язык несильного типа. Поскольку компилятор имеет возможность обнаруживать тип во время выполнения, а тип также строго не ограничен.
Итак, на основе приведенных выше примеров вы можете сказать, что быстрый способ позволяет нам не объявлять тип и оставлять компилятор для определения типа самостоятельно, поэтому оператор swift объявляется официальным языком динамического типа. И это также сильный язык типа, который вы должны использовать строго, когда даже вы не объявляете тип, если компилятор обнаруживает, что это строка, то это не какой-либо другой тип.
Надеюсь, это полезно.
Это прямо противоречит ответу @ matt? –
Быстрое начало, статически типизировано. При использовании с Cocoa вы получаете доступ к библиотеке времени выполнения-c, которая дает вам возможность использовать динамические классы, сообщения и все. Это не означает, что сам язык динамически типизирован. Вы можете сделать то же самое с C или любым другим языком, который поддерживает мост до C, используя libobjc.A.dylib
.
Только если вы хотите использовать объективную библиотеку c. Swift по своей сути статична. Они просто дают вам интерфейс, так что вы можете постепенно перейти к быстрому.
- 1. Является ли 8080 динамическим портом или статическим?
- 2. Является ли Javascript динамическим или статическим с помощью html?
- 3. Как вы можете определить, является ли язык «динамическим языком»?
- 4. Почему C не является динамическим языком?
- 5. Является ли Python статическим шрифтом?
- 6. JSP с условными проверками является статическим или динамическим
- 7. Является ли CAPL языком сценариев или языком программирования?
- 8. Android Sqllite db является статическим или динамическим по своей природе?
- 9. Когда сайт считается «статическим» или «динамическим»
- 10. Является ли Hacklang устаревшим или безгосударственным языком?
- 11. Является ли ActionScript клиентским или серверным языком?
- 12. Является ли LISP скомпилированным или интерпретируемым языком?
- 13. Является ли ASP.Net скриптовым языком или каркасом?
- 14. Является ли Javascript скомпилированным или интерпретируемым языком?
- 15. Является ли jQuery языком?
- 16. Можете ли вы контролировать, является ли тип переменной динамическим или статическим в VB9?
- 17. Является ли Apple Swift чувствительным к регистру языком?
- 18. Является ли PHA языком программирования?
- 19. Является ли machine.config статическим?
- 20. Является ли UML языком программирования?
- 21. Является ли конкретным языком API
- 22. Является ли SCALA теоретическим языком?
- 23. Является ли C++ свободным языком?
- 24. Является ли bash интерпретируемым языком?
- 25. Является ли bash языком программирования?
- 26. Является ли Mathematica нетипизированным языком?
- 27. Является ли JavaScript языком приложения?
- 28. Является ли Swift единственным (основным) языком с арифметикой проверки переполнения?
- 29. Является ли Javascript языком программирования?
- 30. Является статическим булевым ссылочным типом в Swift?
Что касается http://stackoverflow.com/questions/24008234/swift-language-static-or-dynamically-dispatched comment, это выглядит как быстрое и статическое и динамическое –