12

我需要一些东西来存储 LIFO。除了push和pop之外,不需要遍历等功能。

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

scala.collection.immutable.Stack 存在背后有什么原因吗?为什么我更喜欢使用它,有哪些用例可以显示它的好处?

4

1 回答 1

25

API 文档

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

详细一点

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

所以回答你的问题:

  1. 是的,它的存在是有原因的。
  2. 不,你不应该喜欢它而不是列表。
于 2012-06-08T00:37:00.660 回答