我在这里查看 Scala 的可变 ListBuffer 的源代码 https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/mutable/ListBuffer.scala#L158
我在第 158 行遇到了这个演员表。我一直无法弄清楚是什么.asInstanceOf[::[A]]
意思。 ::
不是我可以在文档中找到的边界符号。但是,它是 List 的一种方法。谁能解释一下这个演员在做什么?
我在这里查看 Scala 的可变 ListBuffer 的源代码 https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/mutable/ListBuffer.scala#L158
我在第 158 行遇到了这个演员表。我一直无法弄清楚是什么.asInstanceOf[::[A]]
意思。 ::
不是我可以在文档中找到的边界符号。但是,它是 List 的一种方法。谁能解释一下这个演员在做什么?
::
是一个由头和尾组成的列表构造函数(与之相反,Nil
两者都没有)。换句话说,它是一种保证它包含至少一个元素(头)的列表。
您可以在以下位置找到它的定义List.scala
:https ://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/immutable/List.scala#L439
所以这个转换所做的是将cursor
类型化的 asList[A]
转换为更具体::[A]
的,允许访问它的tl
变量,表示列表尾。这是高效update
运行所必需的。