如何通过普通的JavaScript数组创建kotlin.collections.Set?

时间:2019-03-16 17:45:28

标签: javascript kotlin kotlin-js

我正在尝试从普通JavaScript调用已编译为JavaScript的Kotlin模块。模块内部的Kotlin方法之一要求传递kotlin.collections.Set。如何从普通的JavaScript数组创建这样的set对象?我已经研究了编译后的代码,并且Kotlin对诸如Kotlin.kotlin.collections.setOf_i5x0yv$之类的方法进行了内部引用,但是我看不到从外部调用这些方法的方法。

1 个答案:

答案 0 :(得分:2)

根据Kotlin documentation集没有用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()}")
}