首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scala.js -- js.Dictionary是“地图”的正确类型吗?

问scala.js -- js.Dictionary是“地图”的正确类型吗?
EN

Stack Overflow用户
提问于 2016-09-26 06:39:23
回答 1查看 521关注 0票数 3

我在scala.js中使用,例如,conversations:https://media.twiliocdn.com/sdk/js/conversations/releases/0.13.9/docs/Conversation.html

API使用javascript "Map“对象(它使用类似于new Map()的javascript代码创建它们)。

我能够让它在我的scala.js对象中工作的唯一方法是使用js.Dictionary,如下所示:

代码语言:javascript
复制
@js.native
class TwilioConversation extends js.Object {

  var participants: js.Dictionary[TwilioParticipant] = js.native

这是建立“地图”模型的正确类型,还是有更好的模式?当我尝试使用scala /mutable.Map时,它失败了,出现了类强制转换异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-26 08:10:16

它不完全是正确的类型。正确的类型是js.Map,但目前还不存在。它仍然生活在https://github.com/scala-js/scala-js/pull/2110/files#diff-4937cb9b8e89d2f21babe311012e63a1正在进行的公关工作中。

在将其转化为Scala.js之前,您有两个选项:

  • 使用js.Dictionary,只要您只需要使用字符串键就可以工作,并获取/设置值(因为对于字典和地图,这些操作的公共API是相同的)。
  • 在代码库中定义一个JSMap,如下所示:(受上述链接PR的启发,但不引用Iterable和Iterator部分):
代码语言:javascript
复制
import scala.scalajs.js
import js.annotation._

@js.native
@JSName("Map")
class JSMap[K, V] extends js.Object {
  def size: Int = js.native

  def clear(): Unit = js.native

  def has(key: K): Boolean = js.native

  def get(key: K): js.UndefOr[V] = js.native

  def set(key: K, value: V): this.type = js.native

  def delete(key: K): Boolean = js.native
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39696166

复制
相关文章

相似问题

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