scala中的可观察地图

问题描述 投票:1回答:4

我是scala的新手。每当地图修改时,我都希望得到通知。我认为可以使用可观察的地图来完成。

我正在尝试定义如下对象

var myObj = new Map[UUID, MyType] with ObservableMap[UUID,MyType]

但是它不编译。.>

error: object creation impossible, since:
method iterator in trait MapLike of type => Iterator[(java.util.UUID, MyType)] is not defined
method get in trait MapLike of type (key: java.util.UUID)Option[MyType] is not defined
method -= in trait ObservableMap of type (key: java.util.UUID)this.type is marked `abstract' and `override', but no concrete implementation could be found in a base class
method += in trait ObservableMap of type (kv: (java.util.UUID, MyType))this.type is marked `abstract' and `override', but no concrete implementation could be found in a base class

为什么会这样?您如何实例化一个ObservableMap?

我是scala的新手。每当地图修改时,我都希望得到通知。我认为可以使用可观察的地图来完成。我试图定义一个如下所示的对象var myObj = new Map [UUID,MyType] ...

scala scala-collections
4个回答
1
投票

特征ObseravableMap中的某些方法是抽象的,这意味着您必须提供它们的实现。这是API的link


5
投票

您需要将ObservableMap与具体的地图类型混合使用。


1
投票

Map是一个具有apply方法的对象,该方法创建一个新的地图实例,这就是为什么您可以执行val mymap = Map()之类的原因。但是您使用的地图是特征,它具有一些需要实现的抽象方法。由于MapObservableMap都具有抽象元素,所以它不起作用。


0
投票

这是特质,意欲用作mixin。像:

© www.soinside.com 2019 - 2024. All rights reserved.