【问题标题】:Scala "cursor.asInstanceOf[::[A]].tl = newElem" what does it meanScala "cursor.asInstanceOf[::[A]].tl = newElem" 是什么意思
【发布时间】:2016-12-08 04:02:11
【问题描述】:

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

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

【问题讨论】:

    标签: scala casting listbuffer


    【解决方案1】:

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

    你可以在List.scala找到它的定义:https://github.com/scala/scala/blob/v2.11.8/src/library/scala/collection/immutable/List.scala#L439

    所以这个转换的作用是将cursor 类型为List[A] 转换为更具体的::[A],允许访问它的tl 变量,表示列表尾部。这是高效的update 操作所必需的。

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 2015-12-30
      • 1970-01-01
      • 2020-02-15
      • 2023-03-27
      • 2015-01-03
      • 2017-05-09
      • 2017-02-02
      • 2013-12-16
      相关资源
      最近更新 更多