implicit class
aracılığıyla pimping yaparak Traversable
özelliğine bazı yöntemler eklemeye çalışıyorum.CanBuildFrom ile Traversable için örtülü sınıf nasıl tanımlanır?
Ama ben CanBuildFrom
özelliğiyle bir tür kayıpım. Aşağıdaki düşünün: hatayla Bu başarısız
implicit class TraversableExt[+A, +Repr <: Traversable[A]](traversable: Repr) {
def debug[That](name: String)(implicit bf: CanBuildFrom[Repr, A, That]): That =
traversable.map{ a => println(name + ": " + a); a }(bf)
}
: Ben CanBuildFrom[-Repr, -Elem, +To]
içinde Repr
kontravaryant ve beri dolayısıyla benim Traversable[A]
by-üst bağlıdır Repr
çalışmayabilir olduğunu tahmin ediyorum
Error:(21, 59) type mismatch;
found : scala.collection.generic.CanBuildFrom[Repr,A,That]
required: scala.collection.generic.CanBuildFrom[Traversable[A],A,That]
traversable.map{ a => println(name + ": " + a); a }(bf) ^
. Ama genel olarak oldukça kayboldum. Biri yardım edebilir mi?
implicit class TraversableExt[A, C[X] <: TraversableLike[X, C[X]]](traversable: C[A]) {
def debug[That](name: String)(implicit bf: CanBuildFrom[C[A], A, That]): That =
traversable.map{ a => println(name + ": " + a); a }(bf)
}
derleyici doğru koleksiyonunuzu C[A]
tipini anlaması için artık yapabiliyor yerine jenerik:
Vay canına. Teşekkür ederim. –