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 に答える