Какие функции Kotlin недоступны в статически скомпилированном Groovy?

Kotlin и Groovy выглядят очень похожими языками с очень похожими функциями, если мы собираем Groovy статически. Какие функции, помимо нулевой безопасности, у Котлина есть недостающие в Groovy?

    Kotlin – это язык JVM, который ИМО пытается улучшить на Java в функциях и лаконичности, оставаясь непременным и статическим. Groovy имеет аналогичную концепцию, за исключением того, что решил пойти динамично. В результате, некоторые функции языка будут похожи.

    Вот некоторые отличия, которые я знаю

    • Static vs Dynamic: поскольку Groovy был разработан как динамический язык и @CompileStatic, в то время как большая аннотация (я использую его много), была добавлена ​​позже. Его функция немного заперта, и это не принуждает людей котироваться статически. Его нельзя использовать везде (например, мои тесты Spock, похоже, не скомпилируются с ними). Иногда даже с ним на Groovy по-прежнему кажется странное динамическое поведение время от времени. Котлин 100% статический, а динамика не вариант.

    Есть и ряд других функций, которые есть. Я бы порекомендовал вам посмотреть ссылку, и вы можете заметить еще несколько: https://kotlinlang.org/docs/reference/

    • Классы данных – лаконичны с функцией копирования (немного похожими на классы классов в Scala)
    • Нулевая проверка безопасности, которую вы упомянули (что является большим профи)
    • Способность уничтожать предметы. val (имя, возраст) = человек
    • Функции более высокого порядка, определенные как «fun doStuff (body: Int -> T)): T". Который намного лучше, чем великолепные закрытия ИМО. (очень похоже на Scala)
    • Типовые проверки и умные приведения хороши: https://kotlinlang.org/docs/reference/typecasts.html
    • Companion Objects, таким же образом Scala также пытается удалить статические методы из классов, Kotlin пытается сделать то же самое.
    • Запечатанные классы для ограничения наследования (опять же, у Scala есть что-то подобное)
    • Подтип «Ничего», где все является супертипом этого. (еще одна важная концепция в Scala).
    • когда выражения для базового соответствия шаблонов: https://kotlinlang.org/docs/reference/control-flow.html

    Как вы можете видеть, он заимствует с других языков, кроме Groovy. Они попытались сделать вишневое множество отличных функций, пытаясь сделать хороший язык. Естественно у Groovy есть своя доброта. Я сосредоточил внимание только на том, что есть у Котлина, а не на визе

    Еще один плюс заключается в том, что разработчик IDE компилятор работает очень быстро и имеет отличную поддержку IDE. Не сказать, что Groovy не имеет хорошей поддержки, но мой текущий проект требует много времени для компиляции, и метод рефактории всегда предполагает, что вы кодируете динамически.

    Я бы порекомендовал вам попробовать Коанс, чтобы почувствовать, что они видят, какие особенности языка вам нравятся и как он сравнивается с groovy ( https://github.com/Kotlin/kotlin-koans ).

    Kotlin разработан как статически типизированный язык, с отличной системой типов и другими преимуществами статически типизированного языка. Groovy – на первом месте – динамически типизированный язык, и только тогда – статически.

    Когда вы включаете компиляцию static в groovy, вы получаете только java с синтаксическим сахаром. С другой стороны – Kotlin в своей системе типов имеет два типа ссылок: с нулевым и неизменяемым , поэтому вы можете писать код с меньшим количеством NPE. Если вы спрашиваете только об одной функции – вот и все.

    Вторая отличная особенность Kotlin – она ​​не делает никаких неявных преобразований, с другой стороны – groovy неявно преобразует double в bigdecimal и так далее.

    Но у kotlin есть много других функций, таких как умные касты , ADT ( doc ), типы безопасных сборщиков , нулевые затраты и, наконец, отличная поддержка IDE.

    Также я не уверен в качестве типа вывода Groovy (в закрытии, например, нам нужны дополнительные аннотации , meh), но в Kotlin тип-выводная работа похожа на очарование, без каких-либо аннотаций в каждом мире языка.

    Так статически типизированная компиляция в Котлине – гражданин первого класса, в Гровом – нет.

    Intereting Posts
    Как десериализовать Firestore DocumentSnapshot, содержащий DocumentReference, используя Kotlin Класс не найден, пустой набор тестов в androidTest с использованием Android Studio 3.0.1, Room, Kotlin после использования Kotlin, мой проект случится, что java.lang.NoClassDefFoundError Запуск эспрессо-теста несколько раз Может ли Kotlin разрешить функцию, возвращающую значение типа реализации этого интерфейса? При использовании setcontentview в BottomsheetDialog возникает ошибка, например: «ни одна из следующих функций не может быть вызвана с предоставленными аргументами» Поведение System.identityHashCode () для примитивов Использование EventBus для завершения операции из базовой операции? ImageButton OnClickListener не работает Как использовать Kotlin в существующем приложении для Android? Не удалось установить град для Android 3.0 Kotlin не может найти компонент Dagger при построении с вариантом сборки версии Записать в значение парного нуля в kotlin как получить доступ к данным arraylist в kotlin Поле доступа к котлину в другом месте?