Ich habe 3 ZügeUnerwartetes Verhalten mit Verbindungstypen
trait A
trait B
trait AB extends A with B
und ein Verfahren
def collect[E: Manifest](list: List[Any]) =
list flatMap {
case record: E => Some(record)
case _ => None
}
Für die gegebene Liste
val list = new A {} :: new A {} :: new A with B {} :: new AB {} :: Nil
I collect
aufgerufen mit verschiedenen Arten
collect[A with B](list) // collect all elements from the list
collect[AB](list) // collect only the last element
Kann jemand den Unterschied im Verhalten für A with B
und AB
Arten erklären?