为什么要使用scala.collection.immutable.Stack

ayv*_*ngo 12 scala

我需要一些东西存放LIFO.除了push和pop之外,不需要遍历和其他功能.

我在scala集合中找到了用于创建堆栈的特殊类.但它缺乏模式匹配中的Nil对象和其他方便的scala习语.不可变列表乍一看很合适,它们有建筑和提取的缺点,而这一切都需要LIFO.

scala.collection.immutable.Stack背后有什么原因吗?为什么我更喜欢使用它,用什么用例来展示它的好处?

Tra*_*own 21

API文档:

注意:此类仅出于历史原因而存在,并且作为可变堆栈的类似物.您可以使用列表而不是不可变堆栈.

而在更详细一点:

不可变堆栈在Scala程序中很少使用,因为它们的功能由列表包含:push不可变堆栈上的A 与::列表pop上的a相同,堆栈上的a与列表中的a 相同tail.

那么回答你的问题:

  1. 是的,它存在的原因.
  2. 不,你不应该更喜欢它而不是列表.