Scalajs,js.Dictionary 不一致的行为
Scalajs, js.Dictionary inconsistent behavior
我在使用 ScalaJS 时遇到不一致的错误。这是一个最小的例子:字典变量的大小和内容不一致。
def A(mapping: js.Dictionary[String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}
我 link 使用 fastOptJS 的 IR。在html中的驱动程序代码中,我有
const colorSetting = new Map([
["1", "black"]
]);
ScalaJSExample.A(colorSetting)
在控制台中,第一行正确打印了变量的内容,
"Map {"1" => "black"}"
但是第二行打印的是0,我也试过交换两行的位置,结果是一样的。 .foreach 或 for (x <- mapping) 等任何方法都将变量映射视为空。
任何建议为什么会这样?我正在使用 Scala 2.12.8、ScalaJS 1.7.1。
谢谢!
A js.Dictionary
表示一个 POJO(普通旧 JavaScript 对象),其中元素是字段。但是您正在向它传递一个 JS new Map()
,这不是 POJO——它是一个 Map
。表示 JS 地图的正确类型是 js.Map
.
要么传一个字典给ScalaJSExample.A
,如下:
const colorSetting = {
"1": "black"
};
ScalaJSExample.A(colorSetting)
或在 Scala.js 代码中将 mapping
声明为 js.Map
:
def A(mapping: js.Map[String, String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}
我在使用 ScalaJS 时遇到不一致的错误。这是一个最小的例子:字典变量的大小和内容不一致。
def A(mapping: js.Dictionary[String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}
我 link 使用 fastOptJS 的 IR。在html中的驱动程序代码中,我有
const colorSetting = new Map([
["1", "black"]
]);
ScalaJSExample.A(colorSetting)
在控制台中,第一行正确打印了变量的内容,
"Map {"1" => "black"}"
但是第二行打印的是0,我也试过交换两行的位置,结果是一样的。 .foreach 或 for (x <- mapping) 等任何方法都将变量映射视为空。
任何建议为什么会这样?我正在使用 Scala 2.12.8、ScalaJS 1.7.1。
谢谢!
A js.Dictionary
表示一个 POJO(普通旧 JavaScript 对象),其中元素是字段。但是您正在向它传递一个 JS new Map()
,这不是 POJO——它是一个 Map
。表示 JS 地图的正确类型是 js.Map
.
要么传一个字典给ScalaJSExample.A
,如下:
const colorSetting = {
"1": "black"
};
ScalaJSExample.A(colorSetting)
或在 Scala.js 代码中将 mapping
声明为 js.Map
:
def A(mapping: js.Map[String, String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}