什么是Kotlin模块?

x6492ojm  于 2023-03-03  发布在  Kotlin
关注(0)|答案(4)|浏览(166)

在Kotlin文档中,他们提到了某种类型的 * 模块 *,例如在documentation中的internal修饰符。
但是我找不到任何术语 module 本身的定义,那么 module 是什么意思呢?

ev7lccsx

ev7lccsx1#

模块是一组编译在一起的Kotlin源代码:

  • IntelliJ IDEA模块;
  • Maven项目
  • Gradle源集;
  • 通过一次调用Ant任务编译的一组文件。

这是在同一篇关于可见性修饰符的文档文章中。:)

a9wyjsp7

a9wyjsp72#

根据Kotlin的文档,模块是一组编译在一起的Kotlin文件:

  • 一个IntelliJ IDEA模块
  • Maven项目
  • Gradle源集
  • 一组通过调用<kotlinc> Ant任务编译的文件。

这是**@热键的**,但我想补充这个答案。
According to Andrey Breslav,Kotlin的首席语言设计师:
Kotlin模块一对一地Map到IntelliJ的模块(iml文件)。
根据IntelliJ的documentation
模块允许您在一个应用程序中组合几种技术和框架。在IntelliJ IDEA中,您可以为一个项目创建几个模块,每个模块都可以负责自己的框架。
对于Maven项目或命令行编译,Andrey states
默认情况下,每个编译器运行都是一个单独的模块:所有的二进制依赖关系将被视为不在此刻正被编译的模块中。
此外,Gradle源集也是一个模块,但test源集可以访问main的内部声明。
这意味着,如果Gradle配置中的不同构建风格导致不同的源集(例如,对于生产和调试版本),则一个源集中的内部类将无法用于另一个源集中。

njthzxwz

njthzxwz3#

根据Kotlin语言规范§10.2模块:
模块是代码本身和最终应用程序之间的边界上的概念,因此它依赖于并影响两者。Kotlin模块是一组Kotlin文件,它们被认为是“相互依赖的”,必须在编译过程中一起处理。
在简单的情况下,模块是在给定项目中同时编译的一组文件。

  • 通过单个Kotlin编译器调用编译的一组文件
  • 一个Maven模块
  • Gradle项目

在涉及多平台项目的更复杂的情况下,模块可以分布在多个编译、项目和/或平台上。
对于Kotlin/Core来说,模块对于internal的可见性非常重要。模块如何影响特定的平台将在本规范的相应章节中描述。

gmxoilav

gmxoilav4#

我想你可能是指org.koin.core.module.Module
Koin模块是一个聚集Koin定义的“空间”,用module函数声明。

val myModule = module {
    // Your definitions ...
}

在这种情况下,documentation会很有帮助。

相关问题