如何从普通 JavaScript 数组创建 kotlin.collections.Set?
How to create kotlin.collections.Set from plain JavaScript array?
我正在尝试从纯 JavaScript 调用已编译为 JavaScript 的 Kotlin 模块。模块内的 Kotlin 方法之一需要传递 kotlin.collections.Set
。我如何从一个普通的 JavaScript 数组创建这样一个集合对象?我查看了编译后的代码,Kotlin 对 Kotlin.kotlin.collections.setOf_i5x0yv$
等方法进行了内部引用,但我认为无法从外部调用这些方法。
根据 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()}")
}
我正在尝试从纯 JavaScript 调用已编译为 JavaScript 的 Kotlin 模块。模块内的 Kotlin 方法之一需要传递 kotlin.collections.Set
。我如何从一个普通的 JavaScript 数组创建这样一个集合对象?我查看了编译后的代码,Kotlin 对 Kotlin.kotlin.collections.setOf_i5x0yv$
等方法进行了内部引用,但我认为无法从外部调用这些方法。
根据 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()}")
}