我在尝试将Cloud Functions for Firebase与 Kotlin 一起使用时遇到了问题。
从数据库触发器访问数据时,您可以使用 Javascript 中的snapshot.val();
功能。在 Kotlin 中,这可能不,因为val
是 Kotlin 中的关键字。我通过使用
snapshot.`val()`
这样我可以在 Kotlin 中调用任何名称的函数。现在我觉得每次输入这个“严重的重音”(`)都很烦人,所以我试着创建一个扩展功能。
我的问题是我不知道如何引用该类型。在 Javascript 中,访问数据库时为DeltaSnapshot
或DataSnapshot
。
如何扩展外部类或如何通过其他名称调用它? Typealiases不起作用,因为它们仅限于类/而不是支持函数。
答案 0 :(得分:3)
你有没有试过?
external class MyClass {
@JsName("val")
fun foo()
}
答案 1 :(得分:1)
在javascript中,一个类也是一个对象
snapshot['val']();
更通用
object[functionName]();
object[functionName].call(object, ...args);
object[functionName].apply(object, args);
答案 2 :(得分:0)
try this:
js("snapshot.val()").yourKotlinCode
it works for me