你如何从 Kotlin 中调用 JavaScript delete?
How do you call JavaScript delete from Kotlin?
我正在使用 Kotlin 的第三方库,我必须做的一件事是调用 delete thing[key]
以从事物中删除项目。我无法从 Kotlin 代码中弄清楚如何做到这一点。
我确实尝试了 js("delete thing[key]")
,但是 thing 是一个函数的参数,并且被 Kotlin > JavaScript 编译器命名,因此在执行该行时抛出异常。我也尝试了 js("delete ") thing[key]
,但不出所料,这也没有用。
对于delete
运算符你可以这样写:
external fun delete(p: dynamic): Boolean = noImpl
//...
delete(thing[key])
为了更方便的使用,我添加了一些助手:
fun delete(thing: dynamic, key: String) {
delete(thing[key])
}
// or
fun String.deleteFrom(d: dynamic) {
delete(d[this])
}
fun test(a: Any, k: String) {
delete(a, k)
k.deleteFrom(a)
k deleteFrom a
}
注意:使用 delete 运算符不是一个好的做法,它会导致 JS VM 中的去优化
我正在使用 Kotlin 的第三方库,我必须做的一件事是调用 delete thing[key]
以从事物中删除项目。我无法从 Kotlin 代码中弄清楚如何做到这一点。
我确实尝试了 js("delete thing[key]")
,但是 thing 是一个函数的参数,并且被 Kotlin > JavaScript 编译器命名,因此在执行该行时抛出异常。我也尝试了 js("delete ") thing[key]
,但不出所料,这也没有用。
对于delete
运算符你可以这样写:
external fun delete(p: dynamic): Boolean = noImpl
//...
delete(thing[key])
为了更方便的使用,我添加了一些助手:
fun delete(thing: dynamic, key: String) {
delete(thing[key])
}
// or
fun String.deleteFrom(d: dynamic) {
delete(d[this])
}
fun test(a: Any, k: String) {
delete(a, k)
k.deleteFrom(a)
k deleteFrom a
}
注意:使用 delete 运算符不是一个好的做法,它会导致 JS VM 中的去优化