我在这里查看 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运行所必需的。