Kotlin中实际关键字的目的是什么?

时间:2018-02-14 19:35:05

标签: kotlin

我注意到协同程序的某些函数标有actual关键字。

来自documentation

  

actual表示多平台中特定于平台的实现   项目

据我所知,documentation actual关键字用于多平台项目,应与expect关键字配对使用。

这样的事情:

通用模块:

package org.jetbrains.foo

expect class Foo(bar: String) {
    fun frob()
}

fun main(args: Array<String>) {
    Foo("Hello").frob()
}

对应模块:

package org.jetbrains.foo

actual class Foo actual constructor(val bar: String) {
    actual fun frob() {
        println("Frobbing the $bar")
    }
}

那个案子很清楚。

但是在kotlinx.coroutines.experimental包中,我注意到某些功能如launchwithContext被标记为actual,但包中没有expect个功能。 / p>

那么actual关键字没有 expect的目的是什么?

1 个答案:

答案 0 :(得分:4)

kotlinx.coroutines库实际上使用了多平台项目,因为它支持JVM和JS编译目标。

您可以找到常用模块here,以及您提到的here功能的特定expect声明。