0

如您所知,Scala 中的 Nil 是不可变集合的对象。例如,我的自定义可变集合有问题

class ResourceMap extends mutable.HashMap[String, Int] {
   ....
    def -(o: ResourceMapType):ResourceMap = {

        if (....) {
             ......
        } else {
            Nil // Exception : raises the `change return type to Nil.type`
        }
    }
}

我的问题是如何在-方法中返回 Nil ?

4

2 回答 2

4

Nil 是零长度(空)不可变列表,而不是集合类型的一般空标记。看起来你只是想要new ResourceMap,或者(如果你想清除当前地图然后返回它而不是仅仅返回一个新的空实例):clear; this

于 2013-08-17T16:13:52.183 回答
0

您可以定义一个从您的类继承的空对象,并在您想使用空哈希图时使用它

例如 :

private object EmptyHashMap extends ResourceMap { }

class ResourceMap extends HashMap[String, Int] {

   def -(o: Something):ResourceMap = {
      if(....){
         something
      }else{
          EmptyHashMap
      }
   }
}
于 2015-04-29T08:15:42.223 回答