Konwersję projektu C ++ do Kotlina i nie mam wcześniejszego doświadczenia w Javie, ale zna na poziomie Kotlin. Czy ktoś może powiedzieć, że jest jakiś sposób, aby przekonwertować przestrzeń nazw C ++ do Kotlin rzeczy? Myślę, że nie ma przestrzeni nazw w Kotlinie.

0
Vencat 23 marzec 2020, 11:44

2 odpowiedzi

Najlepsza odpowiedź

Najbliższy odpowiednik przestrzeni nazw jest pakiety. Podobnie jak przestrzeń nazw C ++, pozwalają na zajęcia / symbole o tej samej nazwie do istnienia w różnych opakowaniach. Kotlin rozszerza również składnię importową Java, aby umożliwić imperację na zmianę nazwy, co pozwala na rozwiązanie jednego pliku, który chce użyć dwóch typów o tej samej nazwie z różnych pakietów.

2
Logan Pickup 23 marzec 2020, 08:51

Ponieważ odpowiedź logana mówi, że najbliższy odpowiednik przestrzeni nazw jest pakiety. Problem polega na tym, że w ogóle nie jest blisko.

Pierwsze różnice, które przychodzą na myśl:

  1. W C ++ możesz mieć

    // 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
    }
    

    W Kotlin, wszystkie kod w pliku należy do tego samego pakietu zadeklarowanego na górze.

  2. Pakiety nie są hierarchiczne:

    Hierarchie widoczne pakietów

    Najpierw

    Początkowo pakiety wydają się być hierarchiczne, ale nie są. Na przykład, API Java obejmuje pakiet java.awt, pakiet java.awt.Color, pakiet java.awt.font.fon, który zaczyna się od Java.awt. Jednak pakiet Java.awt.Color, pakiet Java.awt.font.font.pl i inne pakiety java.awt.xxxx nie są wliczone w pakiet Java.awt. Prefiks Java.awt (zestaw narzędzi do okna Java Streszczenie) jest używany do wielu powiązanych pakietów w celu uzyskania ewidencji relacji, ale nie wykazywać włączenia.

    Przestrzega przestrzeni nazw są.

  3. Nie ma odpowiednika anonimowa przestrzeń nazw.

3
Alexey Romanov 23 marzec 2020, 13:26