2017-10-03 2 views
1

Si j'importe collection.mutable.Stack, devrais-je utiliser ou mutable.Stack[]() et y a-t-il des différences entre les deux?Différences entre Stack [] et mutable.Stack []()

+0

Avez-vous essayé? Les références à 'mutable.Stack' ne fonctionneront que si vous importez collection.mutable'. (BTW, 'Stack' est obsolète.) – jwvh

+0

Haha, cela explique pourquoi IntelliJ a continué d'annuler Stack même après l'avoir importé. –

Répondre

2

Vous ne pouvez pas faire les deux en même temps. Il y a 2 façons possibles.

1. Importation scala.collection.mutable.stack

import scala.collection.mutable.Stack 
val stack: Stack[Int] = new Stack[Int] 

2. Importation scala.collection.mutable

import scala.collection.mutable 
val stack: mutable.Stack[Int] = new mutable.Stack[Int] 

Dans le premier exemple que vous importez scala.collecion.mutable.Stack. Par conséquent, vous pouvez utiliser directement l'objet Stack et ses fonctions. Dans la seconde, vous importez scala.collection.mutable. De cette façon, vous êtes autorisé à utiliser les fonctions du paquet mutable. Vous devez utiliser des objets dans ce paquet en appelant le mutable.xxx.

1

Si vous suivez en général le principe fonctionnel pour utiliser autant que possible les structures de données immuables, je voudrais import scala.collection.mutable et utiliser mutable.Stack pour indiquer que vous utilisez la version mutable dans ce cas particulier. Cette convention est également décrite dans le scala documentation for collections