可变Scala集合中的Nil对象

时间:2013-08-17 15:57:18

标签: scala

如您所知,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?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

例如:

private object EmptyHashMap extends ResourceMap { }

class ResourceMap extends HashMap[String, Int] {

   def -(o: Something):ResourceMap = {
      if(....){
         something
      }else{
          EmptyHashMap
      }
   }
}