Scala "cursor.asInstanceOf[::[A]]. Tl = newElem" что это значит
Я ищу исходный код изменяемого ListBuffer в Scala здесь https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/mutable/ListBuffer.scala
и я столкнулся с этим актером на линии 158. Я не смог понять, что .asInstanceOf[::[A]]
средства. ::
это не обозначение границ, которые я мог бы найти в документации. Но это метод для списка. Кто-нибудь может объяснить, что делает этот актерский состав?
1 ответ
::
это конструктор списка, который состоит из головы и хвоста (в отличие от Nil
который не имеет ни того, ни другого) Другими словами, это своего рода список, который гарантирует, что он содержит хотя бы один элемент (заголовок).
Вы можете найти его определение в List.scala
: https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/immutable/List.scala
Так что этот актерский состав делает то, что он поворачивает cursor
напечатано как List[A]
в более конкретную ::[A]
, что позволяет получить доступ к его tl
переменная, представляющая хвост списка. Что необходимо для эффективного update
операция.