Эквивалент пространства имен C ++ в Kotlin - PullRequest
0 голосов
/ 23 марта 2020

Я конвертирую проект C ++ в Kotlin, и у меня нет опыта работы с Java, но я знаю некоторый уровень Kotlin. Может кто-нибудь сказать, есть ли способ конвертировать пространство имен C ++ в Kotlin вещь? Я думаю, что в Kotlin.

нет пространства имен.

Ответы [ 2 ]

2 голосов
/ 23 марта 2020

Как говорится в ответе Логана, наиболее близким эквивалентом пространств имен являются пакеты. Проблема в том, что это совсем не близко.

Первые различия, которые приходят на ум:

  1. В C ++ вы можете иметь

    // code here is outside any namespace
    namespace A {
    // code here is in namespace A
    namespace B {
    // code here is in namespace A::B
    }
    // code here is in namespace A
    }
    

    In Kotlin, весь код в файл принадлежит тому же пакету, объявленному наверху.

  2. Пакеты не являются иерархическими:

    Видимые иерархии пакетов

    Сначала пакеты выглядят как иерархическая, но это не так. Например, API Java включает пакет java .awt, пакет java .awt.color, пакет java .awt.font и многие другие, начинающиеся с java .awt. Однако пакет java .awt.color, пакет java .awt.font и другие пакеты java .awt.xxxx не включены в пакет java .awt. Префикс java .awt (Java Abstract Window Toolkit) используется для ряда связанных пакетов, чтобы сделать взаимосвязь очевидной, но не для включения.

    Пространства имен:

  3. Нет эквивалента анонимному пространству имен .

2 голосов
/ 23 марта 2020

Ближайшим эквивалентом пространств имен являются пакеты. Как и пространства имен C ++, они позволяют классам / символам с одинаковыми именами существовать в разных пакетах. Kotlin также расширяет синтаксис импорта Java, чтобы разрешить переименование импорта, что позволяет вам работать с одним файлом, который хочет использовать два типа с одинаковыми именами из разных пакетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...