相关疑难解决方法(0)

扩展Scala集合:一种基于Array的索引练习

作为练习,我想将Scala数组集合扩展到我自己的OneBasedArray(做你期望的,索引从1开始).由于这是一个不可变的集合,我想让它在调用filter/map等时返回正确的类型.

我已经在这里,这里这里阅读了资源,但我很难理解如何将其转换为数组(或者除了示例中的集合之外的其他集合).我是否在这种结构的正确轨道上?

class OneBasedArray[T] 
  extends Array[T] 
  with GenericTraversableTemplate[T, OneBasedArray]
  with ArrayLike[T, OneBasedArray]
Run Code Online (Sandbox Code Playgroud)

是否还有其他资源可以帮助解释扩展集合?

scala scala-2.8 scala-collections

6
推荐指数
2
解决办法
1667
查看次数

扩展Scala集合

我想要一个试图覆盖现有密钥值的Map.我试过了:

trait Unoverwriteable[A, B] extends scala.collection.Map[A, B] {
    case class KeyAlreadyExistsException(e: String) extends Exception(e)

    abstract override def + [B1 >: B] (kv: (A, B1)): Unoverwriteable[A, B1] = {
        if (this contains(kv _1)) throw new KeyAlreadyExistsException(
            "key already exists in WritableOnce map: %s".format((kv _1) toString)
        )
        super.+(kv)
    }

    abstract override def get(key: A): Option[B] = super.get(key)
    abstract override def iterator: Iterator[(A, B)] = super.iterator
    abstract override def -(key: A): Unoverwriteable[A, B] = super.-(key)
}
Run Code Online (Sandbox Code Playgroud)

得到了:

<console>:11: error: type mismatch;
 found   : …
Run Code Online (Sandbox Code Playgroud)

generics scala traits extend scala-collections

5
推荐指数
1
解决办法
3086
查看次数

标签 统计

scala ×2

scala-collections ×2

extend ×1

generics ×1

scala-2.8 ×1

traits ×1