gpt4 book ai didi

scala.js - 在 Scala 类和 Dynamic 之间转换

转载 作者:行者123 更新时间:2023-12-04 05:38:19 28 4
gpt4 key购买 nike

  • 如何从 Scala 类转换为 Dynamic,以便可以调用未提及的 javascript 函数?
  • 如何从 Dynamic 转换为 Scala 类?
  • 最佳答案

    如果 Scala 类是指 JavaScript 类的类型化外观,即扩展 js.Object 的类/特征,然后您可以简单地使用 asInstanceOf 进行转换.例如:

    val dateStatic = new js.Date
    val dateDynamic = dateStatic.asInstanceOf[js.Dynamic]

    另一个方向是相同的:
    val dateStaticAgain = dateDynamic.asInstanceOf[js.Date]
    .asInstanceOf[T]T 时总是空操作(即强制转换)扩展 js.Any .

    然而,如果 Scala 类是指一个合适的 Scala 类(它不是 js.Object 的子类型),那么基本上你可以做同样的事情。但只有 @JSExport 'ed 成员将从 js.Dynamic 中可见界面。例如:
    class Foo(val x: Int) {
    def bar(): Int = x*2
    @JSExport
    def foobar(): Int = x+4
    }

    val foo = new Foo(5)
    val fooDynamic = foo.asInstanceOf[js.Dynamic]
    println(fooDynamic.foobar()) // OK, prints 9
    println(fooDynamic.bar()) // TypeError at runtime

    关于scala.js - 在 Scala 类和 Dynamic 之间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26958391/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com