0

我正在尝试从纯 JavaScript 调用已编译为 JavaScript 的 Kotlin 模块。模块内的 Kotlin 方法之一需要kotlin.collections.Set传递 a。如何从纯 JavaScript 数组创建这样的集合对象?我查看了编译后的代码,Kotlin 对方法进行了内部引用,Kotlin.kotlin.collections.setOf_i5x0yv$但我看不到从外部调用这些方法的方法。

4

1 回答 1

2

根据Kotlin 文档,集合没有用 Javascript 表示。

另一方面,数组是映射的。因此,可以编写一个简单的函数,将 Javascript 数组映射到 Kotlin 集。

@JsName("createSetFromJsArray")
fun <TValue> createSetFromJsArray(array: Array<TValue>) = array.toSet()

从 Javascript 调用 Kotlin 函数时可以使用此函数,如下所示:

var test = ["a", "b", "c"];
aKotlinFunction(createSetFromJsArray(test));

和一个 Kotlin 函数实现如下:

@JsName("aKotlinFunction")
fun aKotlinFunction(test: Set<String>) {
    console.log("aKotlinFunction called with param ${test.joinToString()}")
}
于 2019-03-21T17:18:55.290 回答