12

LIFOを保管するものが必要です。プッシュとポップ以外のトラバースやその他の機能は必要ありません。

スタックを作成するための特別なクラスが scala コレクションに見つかりました。しかし、パターン マッチングやその他の便利な scala イディオムには Nil オブジェクトがありません。不変リストは一見するとうまく適合します。構築と抽出に短所があり、LIFO にはすべて必要です。

scala.collection.immutable.Stack が存在する理由はありますか? なぜ私はそれを使用することを好むべきですか?その利点を示すユースケースは何ですか?

4

1 に答える 1

25

APIドキュメントから:

注:このクラスは、歴史的な理由から、可変スタックの類似物としてのみ存在します。不変のスタックの代わりに、リストを使用できます。

そしてもう少し詳しく

不変スタックは、その機能がリストに組み込まれているため、Scala プログラムではめったに使用されません。push不変スタック::上の a はリスト上の apopと同じであり、スタック上のtaila はリスト上の a と同じです。

だからあなたの質問に答えるために:

  1. そう、存在理由があります。
  2. いいえ、リストよりも優先すべきではありません。
于 2012-06-08T00:37:00.660 に答える