Kotlin的多平台项目
多平台项目是 Kotlin 1.2 中的一个新的实验性的功能,允许你在支持 Kotlin 的目标 平台——JVM、JavaScript 以及(将来的)Native 之间重用代码。在多平台项目 中,你有三种模块:
1,一个公共模块包含平台无关代码,以及无实现的依赖平台的 API 声明。
2,平台模块包含通用模块中的平台相关声明在指定平台的实现,以及其他平台相 关代码。
3,常规模块针对指定的平台,既可以是平台模块的依赖,也可以依赖平台模块。
当你为指定平台编译多平台项目时,既会生成公共代码也会生成平台相关代码。
多平台项目支持的一个主要特点是可以通过预期声明与实际声明来表达公共代码对 平台相关部分的依赖关系。一个预期声明指定一个 API(类、接口、注解、顶层声 明等)。一个实际声明要么是该 API 的平台相关实现,要么是一个引用到在一个外 部库中该 API 的一个既有实现的别名。
在公共代码中:
// 预期平台相关 API:
expect fun hello(world: String): String
fun greet() {
// 该预期 API 的用法:
val greeting = hello("multi-platform world") println(greeting)
}
expect class URL(spec: String) {
open fun getHost(): String
open fun getPath(): String
}
在 JVM 平台代码中:
actual fun hello(world: String): String = "Hello, $world, on the JVM platform!"
// 使用既有平台相关实现:
actual typealias URL = java.net.URL
我的笔记