Назад к вопросам
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
}