我想要的只是使用一些并发Set(看起来根本不存在).
Java使用java.util.concurrent.ConcurrentHashMap< K,Void>实现这种行为.我想在Scala中做类似的事情,所以我创建了Scala HashMap(或Java ConcurrentHashMap)的实例,并尝试添加一些元组:
val myMap = new HashMap[String,Unit]() myMap + (("myStringKey",Unit))
这当然会破坏编译过程,因为Unit是抽象的和最终的.
如何使这项工作?我应该使用Any / AnyRef吗?我必须确保没有人插入任何价值.
感谢帮助
解决方法
您可以使用其类型为Unit的():
scala> import scala.collection.mutable.HashMap import scala.collection.mutable.HashMap scala> val myMap = new HashMap[String,Unit]() myMap: scala.collection.mutable.HashMap[String,Unit] = Map() scala> myMap + ("myStringKey" -> ()) res1: scala.collection.mutable.Map[String,Unit] = Map(myStringKey -> ())
这是来自Unit.scala
的评论:
There is only one value of type
Unit
,()
,and it is not represented by any object in the underlying runtime system.