Назад к вопросам
Junior
101
questionbank
Объясните, как устроены пакеты и модули в Kotlin.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Пакеты используются для организации кода, предотвращения конфликтов имен и улучшения читаемости. Объявляются с помощью ключевого слова package в начале файла.
Модули — это набор Kotlin-источников, скриптов сборки, ресурсов и настроек проекта. Используются для компиляции, выполнения, тестирования и развертывания. В проектах Intellij IDEA модуль соответствует модулю IDE; в Gradle — корневому проекту или субпроекту.
Различия:
- Уровень организации: Пакеты – на уровне исходного кода, модули – на уровне сборки проекта.
- Назначение: Пакеты для логической группировки кода, модули для управления зависимостями, компиляцией и развертыванием.
- Иерархия: Пакеты образуют иерархию с помощью точки (например,
com.example.util), модули могут иметь иерархию (субпроекты в Gradle) или быть независимыми. - Зависимости: Зависимости указываются между модулями, а не пакетами.
Пример пакета:
// File: Util.kt
package com.example.util
fun formatName(firstName: String, lastName: String): String {
return "$firstName $lastName"
}
Использование пакета:
package com.example.app
import com.example.util.formatName
fun main() {
val fullName = formatName("John", "Doe")
println(fullName)
}
Пример структуры проекта с модулями (Gradle):
myproject/
├── app/ // Модуль приложения
│ ├── build.gradle.kts
│ └── src/
│ └── main/kotlin/com/example/app/Main.kt
└── util/ // Модуль утилит
├── build.gradle.kts
└── src/
└── main/kotlin/com/example/util/Util.kt
В app/build.gradle.kts будет указана зависимость от модуля util:
// app/build.gradle.kts
plugins {
kotlin("jvm")
}
dependencies {
implementation(project(":util")) // Зависимость от модуля util
}