Как мне определить пользовательский интерфейс коллекции в Scala без определения реализации?

Я пытаюсь определить пользовательский интерфейс коллекции в Scala 2.8. Я хочу потребовать, чтобы подклассы были Traversable, а также имели другое поведение. Я также хочу, чтобы такие методы, как map (), возвращали соответствующий тип, как показано ниже:

trait CustomCollection[+A] extends Traversable[A] {
    def customOperation(i:Int):Int // for example
}

def incrementAll(c:CustomCollection[Int]):CustomCollection[Int] = c.map { _ + 1 }

Это не компилируется, потому что CustomCollection.map () возвращает Traversable. Я полагаю, мне нужно определить CanBuildFrom, но затем мне нужно определить метод apply (), который создает экземпляр с нуля. Я не хочу указывать способ его создания; это должно быть на усмотрение разработчика. Возможно ли это?

5
задан traversable 7 January 2011 в 15:00
поделиться