2

我编写了一个 Kotlin 函数,该函数使用List<String>. 该函数有一个注释,@JsName以便我可以从 JavaScript 调用此函数。我无法确定我应该将什么传递给这个函数。传递 JavaScript 数组不起作用,因为 Kotlin-JS 代码调用iterator对象。此外,Kotlin 标准库中的名称都是错误的;所以我不能以任何可靠的方式listOf在 JavaScript 中调用 say 并将结果传递给函数。

那么问题是,如果 Kotlin 标准库名称被破坏,我们应该如何创建并传递给对象函数,而不是简单的类型(数字、字符串等)?

4

1 回答 1

1

您可以在 Kotlin 中与 JavaScript 互操作时使用 ArrayList,因为List它是一个接口(不在 JavaScript 中)并且(其中一个)实际实现是ArrayList.

在处理 时List<String>,您可以在 JavaScript 中执行此操作:

let list = new kotlin.kotlin.collections.ArrayList(["foo","bar","baz"])

您可以将list变量传递给需要List<String>参数的函数。

评论:

  1. 如果您的某些 Kotlin 函数返回一个 List,您可以调用list.toArray()将 Kotlin 中的 List 转换回 JavaScript 数组。
  2. 我会声明将项目推送到 a 的“中间人”(适配器)函数,该函数List需要 aMutableList和 call add,因为库函数被破坏了。(我也想要一种更合适的方法)
  3. 如果您需要处理自定义对象的列表,例如 class Foo,您应该可以调用new <package>.<identifier>...Foo(params).
于 2019-09-16T03:59:29.060 回答