2016-12-07 6 views
0

Ich bin auf den Quellcode der Suche nach Scala wandelbar ListBuffer hier https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/mutable/ListBuffer.scala#L158Scala „cursor.asInstanceOf [:: [A]]. Tl = newElem“ was bedeutet es

und ich lief in dieser Besetzung auf der Leitung 158. Ich konnte nicht herausfinden, was .asInstanceOf[::[A]] bedeutet. :: ist keine Schrankennotation, die ich in der Dokumentation finden konnte. Aber es ist eine Methode für eine Liste. Kann jemand erklären, was diese Besetzung macht?

Antwort

1

:: ist ein Listenkonstruktor, der aus Kopf und Schwanz besteht (im Gegensatz zu Nil, die keine hat). Mit anderen Worten, es ist eine Art Liste, die garantiert, dass es mindestens ein Element (Kopf) enthält. https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/immutable/List.scala#L439

Also, was diese Besetzung tut, ist, dass es die cursor getippt als List[A] in spezifischere ::[A] verwandelt, das seine tl Variable ermöglicht den Zugriff auf die Liste Schwanz darstellt:

Sie können ihre Definition in List.scala finden. Was für einen effizienten update Betrieb notwendig ist.