码迷,mamicode.com
首页 > 其他好文 > 详细

Scala 深入浅出实战经典第 83讲:Scala中List的实现内幕源码揭秘

时间:2015-09-11 12:50:12      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:scala

2.10.x 版本 List中的take是用ListBuffer实现的。
但是在2.11.x版本中不是:
 override def take (n: Int): List[ A] = if (isEmpty || n <= 0) Nil else {
    val h = new ::( head, Nil )
    var t = h
    var rest = tail
    var i = 1
    while ({ if (rest .isEmpty) return this ; i < n}) {
      i += 1
      val nx = new ::(rest .head, Nil)
      t.tl = nx
      t = nx
      rest = rest .tail
    }
    h
  }

final case class ::[B](override val head : B, private [scala] var tl: List[B]) extends List[B] 
声明为var是可以让ListBuffer操作


信息来源于 DT大数据梦工厂,微信公众号:DT_Spark 
视频地址:http://edu.51cto.com/lesson/id-71363.html

Scala 深入浅出实战经典第 83讲:Scala中List的实现内幕源码揭秘

标签:scala

原文地址:http://2615187.blog.51cto.com/2605187/1693690

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!