Ci sono un sacco di different collection types a Scala, ognuno con il proprio insieme di operazioni che svolgono supportati e/o ben.
In Scala, una List
è una sequenza di celle di controllo immutabile come in Lisp. Ottenere l'elemento last
non è una soluzione ottimizzata (l'elemento head
è veloce). Allo stesso modo, Queue
e Stack
sono ottimizzati per il recupero di un elemento e del resto della struttura da un'estremità in particolare. Puoi utilizzare uno di questi se il tuo ordine è annullato.
Altrimenti, Vector
è un buon eseguendo struttura generale che è veloce sia per head
e last
chiamate:
val v = Vector(1, 2, 3, 4)
val init :+ last = v // uses pattern matching extractor `:+` to get both init and last
Dove last
sarebbe l'equivalente del funzionamento pop
, e init
è la sequenza con l'ultimo elemento rimosso (è anche possibile utilizzare dropRight(1)
come suggerito nelle altre risposte). Per recuperare l'ultimo elemento, utilizzare v.last
.
fonte
2013-10-07 13:17:21
solo sapere, come è meglio che chiamare scorso e ottenere una nuova lista dopo aver chiamato dropRight (1)? –
'dropRight (1)' farà anche il lavoro (così come 'x.reverse.tail', e varie altre chiamate possibili). Meno caratteri da digitare, però! :) – Shadowlands
a differenza di pop x.reverse.tail sarà O (n) –