Я хочу просто поменять местами элементы в этой коллекции, поэтому я решил потребовать, чтобы она была частью Traversable
и любого из ее подтипов, и чтобы она возвращала Traversable, но я думаю, что мне может понадобиться использовать дисперсию для этого также, но на данный момент я получаю ошибку компилятора, используя Scala 2.10.0-M5.
trait Polynomials {
def coefficients[+A <: Traversable[T]](x:A):Traversable[A] = x.foldLeft(Traversable[A]())((b,a) => a :: b)
}
Это ошибки, которые я получаю, и я не уверен, что я сделал неправильно.
Description Resource Path Location Type
']' expected but identifier found. Polynomials.scala line 4 Scala Problem
'=' expected but ']' found. Polynomials.scala line 4 Scala Problem
illegal start of simple expression Polynomials.scala line 5 Scala Problem
T
нигде не определен. Кроме того, вы не можете аннотировать параметр типа метода с помощью дисперсии, поэтому+A
не имеет никакого смысла. Тип в аргументе метода всегда находится в контравариантной позиции (вы можете вызыватьdef m(a: AnyRef)
с аргументомString
, а возвращаемый тип всегда находится в ковариантной позиции (вы можете рассматривать результатdef m() : String
какAnyRef
. - person 0__   schedule 27.07.2012