List Scaladoc说:
时间:列表有O(1)前置和头/尾访问。
val mainList = List(3, 2, 1)
val with4 = 4 :: mainList // re-uses mainList, costs one :: instance
val with42 = 42 :: mainList // also re-uses mainList, cost one :: instance
val shorter = mainList.tail // costs nothing as it uses the same 2::1::Nil instances as mainList
它是什么意思"花费一个::实例"? (O(1)
的引用是提供背景,而不是我所问的。我的问题是评论声明。)
答案 0 :(得分:3)
我认为costs one :: instance
表示内存消耗。执行4 :: mainList
后,scala将创建一个新的单::
个实例。执行mainList.tail
时,scala不必创建任何内容。
这显示非常重要,因为对于整个块
val mainList = List(3, 2, 1)
val with4 = 4 :: mainList // re-uses mainList, costs one :: instance
val with42 = 42 :: mainList
Scala只发出5个::
个实例,而不是8个。
绝对不是关于性能,因为你不能说mainList.tail
在性能方面没有任何成本。