2013-08-12 7 views
8

Ich habe eine veränderbare verknüpften Liste für einen bestimmten Anwendungsfall zu verwenden. Ich möchte jedoch vermeiden, "Referenz muss vorangestellt werden" Warnungen.Scala wandelbar Sammlungen und „Reference muss voran Warnungen werden“

scheint der Import Aliasing eine Lösung zu sein:

import scala.collection.mutable.{LinkedList => MutableLinkedList} 

es auf den meisten Fällen, außer in Muster funktioniert eine leere LinkedList passende, erzeugt dies noch die Warnung:

case MutableLinkedList() => // do Something 

die einzige Art, wie ich können diese Warnung entfernen scheint einen voll qualifizierten Fall Prüfung auf eine leere Liste zu tun zu sein:

case scala.collection.mutable.LinkedList() => // do Something 

Warum wird der erste Fall die Warnung nicht los?

Antwort

15

Importieren Sie einfach mutable Paket:

import collection.mutable 

und verwenden Sie es mit jeder wandelbar Sammlung:

mutable.LinkedList(1, 2, 3) 

oder wenn Sie es vorziehen, prägnanter Variante:

import collection.{mutable => m} 
m.LinkedList(1, 2, 3) 

Es funktioniert auch mit Mustererkennung.

+3

Erklärung https://blog.jetbrains.com/scala/2012/05/26/mutableimmutable-collections-prefix-convention-support/ – user7610

2

Ich versuchte es in der 2.10.2 Shell und sahen keine Warnungen.

Eine Möglichkeit, "Aliasing" der mutable.LinkedList Extraktor tut:

scala> MutableLinkedList(1,2,3,4,5) 
res0: scala.collection.mutable.LinkedList[Int] = LinkedList(1, 2, 3, 4, 5) 

scala> val LL = MutableLinkedList 
LL: scala.collection.mutable.LinkedList.type = [email protected] 

scala> res0 match { case LL(1,2, _*) => "yey"; case _ => "bad" } 
res3: String = yey 

sehen? Nun LL verweist auf die MutableLinkedListBegleiter Objekt

+0

Die Warnung in IntelliJ Community Edition heraufkam, arbeitet Ihr Vorschlag wunderbar. Vielen Dank. – ArtisanV