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