0

我在这里查看 Scala 的可变 ListBuffer 的源代码 https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/mutable/ListBuffer.scala#L158

我在第 158 行遇到了这个演员表。我一直无法弄清楚是什么.asInstanceOf[::[A]]意思。 ::不是我可以在文档中找到的边界符号。但是,它是 List 的一种方法。谁能解释一下这个演员在做什么?

4

1 回答 1

1

::是一个由头和尾组成的列表构造函数(与之相反,Nil两者都没有)。换句话说,它是一种保证它包含至少一个元素(头)的列表。

您可以在以下位置找到它的定义List.scalahttps ://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/immutable/List.scala#L439

所以这个转换所做的是将cursor类型化的 asList[A]转换为更具体::[A]的,允许访问它的tl变量,表示列表尾。这是高效update运行所必需的。

于 2016-12-07T19:55:12.910 回答