Junior
Wyjaśnij, jak zorganizowane są pakiety i moduły w Kotlin.
sobes.tech AI
Odpowiedź od AI
Pakiety są używane do organizacji kodu, zapobiegania konfliktom nazw i poprawy czytelności. Deklaruje się je za pomocą słowa kluczowego package na początku pliku.
Moduły to zestawy źródeł Kotlin, skryptów budowania, zasobów i ustawień projektu. Służą do kompilacji, uruchamiania, testowania i wdrażania. W projektach IntelliJ IDEA moduł odpowiada modułowi IDE; w Gradle — projektowi głównemu lub podprojektowi.
Różnice:
- Poziom organizacji: Pakiety na poziomie kodu źródłowego, moduły na poziomie kompilacji projektu.
- Cel: Pakiety do logicznej grupowania kodu, moduły do zarządzania zależnościami, kompilacją i wdrożeniem.
- Hierarchia: Pakiety tworzą hierarchię za pomocą kropek (np.
com.example.util), moduły mogą mieć hierarchię (podprojekty w Gradle) lub być niezależne. - Zależności: Zależności są wskazywane między modułami, a nie między pakietami.
Przykład pakietu:
// Plik: Util.kt
package com.example.util
fun formatName(firstName: String, lastName: String): String {
return "$firstName $lastName"
}
Użycie pakietu:
package com.example.app
import com.example.util.formatName
fun main() {
val fullName = formatName("John", "Doe")
println(fullName)
}
Przykład struktury projektu z modułami (Gradle):
myproject/
├── app/ // Moduł aplikacji
│ ├── build.gradle.kts
│ └── src/
│ └── main/kotlin/com/example/app/Main.kt
└── util/ // Moduł narzędziowy
├── build.gradle.kts
└── src/
└── main/kotlin/com/example/util/Util.kt
W pliku app/build.gradle.kts wskazuje się zależność od modułu util:
// app/build.gradle.kts
plugins {
kotlin("jvm")
}
dependencies {
implementation(project(":util")) // Zależność od modułu util
}