Я пытаюсь определить пользовательский интерфейс коллекции в 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 (), который создает экземпляр с нуля. Я не хочу указывать способ его создания; это должно быть на усмотрение разработчика. Возможно ли это?