El rasgo Map[A,+B]
tiene un métodoTipo parámetro de minBy [B] (f: ((A, B)) ⇒ B) (cmp implícita: Orden [B]): (A, B)
def minBy [B] (f: ((A, B)) ⇒ B)(implicit cmp: Ordering[B]): (A, B)
lo esperado el B
del rasgo a ser el mismo que el del método, pero entonces no puede todavía dar sentido a esto:
val m2 = Map('a -> "1", 'b ->"2" ,'c ->"3")
m2.minBy((t:(Symbol,String))=>Integer.parseInt(t._2))
Aquí, B
de Map[A,+B]
es String
, pero B
de minBy
es Int
- ¿o no?
Así que espera que el tipo del método a ser bastante
def minBy [C] (f: ((A, B)) ⇒ C)(implicit cmp: Ordering[C]): (A, B)
pero eso no es lo que dice la fuente.
Si ambos son distintos, ¿dónde debería haberlo sabido? Si no lo son, ¿puedes detectar y señalar mi error?
Ah, está bien, estaba equivocado sobre ese comentario de la fuente. El método minBy se declara en GenTraversableOnce, luego se define en TraversableOnce, y ambos no saben acerca de B. Por lo tanto, es realmente un problema escaladoc. Gracias a los dos. – Theodosius