首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JS使用Kotlin和Duktape在Android中传播语法

JS使用Kotlin和Duktape在Android中传播语法
EN

Stack Overflow用户
提问于 2020-04-07 22:37:17
回答 1查看 88关注 0票数 0

我正在使用Duktape在我的安卓应用程序中运行JS代码。我正在尝试在JS中实现一个日志函数,它接收多个varargs参数。当运行代码时,我得到了一个异常:

方法引发了“com.squareup.duktape.DuktapeException”异常。SyntaxError:期望的标识符(第3行)

Duktape支持Spread syntax吗?一般情况下是否支持Kotlin选项?

代码语言:javascript
复制
//JS code
"""
    var Console = {
        log : function(...args) {
            __consoleImpl.log(args);
                    }
            };
"""

//Kotlin interface
interface Console {

    fun log(arg1:String? = null, arg2:String? = null, arg3:String? = null, arg4:String? = null,
            arg5:String? = null, arg6:String? = null, arg7:String? = null, arg8:String? = null,
            arg9:String? = null, arg10:String? = null)
}


//Interface impl
class ConsoleImpl() : Console {

    override fun log(arg1: String?, arg2: String?, arg3: String?, arg4: String?, arg5: String?, arg6: String?, arg7: String?, arg8: String?, arg9: String?, arg10: String?) {
    val values = listOfNotNull(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10).map {it.toString()}.filter { it != "undefined" }
    Log.d("ConsoleImpl", values.joinToString())
    }
}

//in setup
duktape.set("__consoleImpl", Console::class.java, ConsoleImpl())
duktape.evaluate("Console.log("message")) //exception thrown here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-08 15:00:41

duktape仅完全支持ES5,外加来自ES6和ES7 (see post ES5 features)的一些功能。扩展语法是一个ES6特性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61082566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档