2012-06-08 14 views
11

Ho bisogno di qualcosa per memorizzare un LIFO. Non è necessario per attraversare e altre funzioni, ad eccezione di push e pop.Perché usare scala.collection.immutable.Stack

Ho trovato una classe speciale in scala collezione per la creazione di una pila. Ma manca di oggetto Nil in pattern matching e altri utili idiomi scala. Elenchi immutabili si adattano bene a prima vista, hanno contro per la costruzione e per l'estrazione e che è tutto il necessario da LIFO.

C'è qualche motivo dietro scala.collection.immutable.Stack esistenza? Perché dovrei preferire usarlo, quali sono i casi d'uso per mostrare i suoi benefici?

risposta

19

Da the API documentation:

Nota: esiste Questa classe solo per ragione storica e come un analogo di pile mutevoli. Invece di uno stack immutabile, puoi semplicemente utilizzare un elenco .

E in a little more detail:

pile immutabili vengono utilizzati raramente nei programmi Scala perché la loro funzionalità si confonde con le liste: A push su uno stack immutabile è lo stesso di un :: in un elenco e uno pop su una pila è lo stesso di tail su un elenco.

Quindi, per rispondere alle vostre domande:

  1. Sì, c'è una ragione per la sua esistenza.
  2. No, non dovresti preferirlo agli elenchi.