gpt4 book ai didi

javascript - ScalaJs 和 Javascript 是否可以替代 "implements"特征

转载 作者:行者123 更新时间:2023-11-28 19:03:20 25 4
gpt4 key购买 nike

我有这样的代码,我希望能够作为 Javascript 执行:

@JSExport
class Feeder {

@JSExport
def feed(feedable: Feedable): Unit = {
feedable.feed();
}
}

trait Feedable {
def feed()
}

当然特征不能导出,但我期望一种模式匹配就足够了。所以我尝试创建一个带有 feed 函数的 Javascript 对象,但它也失败了:

var feeder = new test.Feeder();
var feedable = new function() {
this.feed = function() {
console.log('Feeding javascript');
}
}
feeder.feed(feedable);

但这引发了一个异常(exception):

scala.scalajs.runtime.UndefinedBehaviorError: An undefined behavior was detected: [object Object] is not an instance of test.Feedable

这是实现这种行为的方法吗?

最佳答案

我不能说我 100% 确定您想要完成什么,但它看起来就像您正在尝试定义 feed 函数JavaScript。在这种情况下,您不想导出 Scala 类,而是希望将 Feedable 定义为外观:

trait Feedable extends js.Object {
def feed():Unit = js.native
}

这是这段代码的唯一方法:

this.feed = function() {
console.log('Feeding javascript');
}

似乎有道理。

Facades 是你告诉 Scala JavaScript 代码结构的方式,这似乎就是你在这里想要做的。请参阅 calling JavaScript from Scala 上的页面了解更多详情...

关于javascript - ScalaJs 和 Javascript 是否可以替代 "implements"特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32139864/

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