2013-08-12 17 views
8

Belirli bir kullanım durumu için değiştirilebilen bağlantılı bir liste kullanmalıyım. Bununla birlikte, "Referans ön eklenmiş" uyarılarından kaçınmak isterim.Scala değişken koleksiyonları ve "Referans önek uyarıları olmalı"

case MutableLinkedList() => // do Something 

tek yolu:

boş bir LinkedList eşleşen desende haricinde çoğu durumda çalışır
import scala.collection.mutable.{LinkedList => MutableLinkedList} 

, bu hala uyarıyı üretir: ithalat Aliasing

bir çözüm gibi görünüyor Bu uyarıyı kaldırmak boş bir listede tam nitelikli vaka kontrolü yapmak gibi görünüyor:

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

İlk vaka neden uyarıdan kurtulmuyor?

cevap

15

Sadece mutable paket içe

mutable.LinkedList(1, 2, 3) 

veya daha özlü varyantı tercih ederseniz:

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

Ayrıca desen eşleme ile çalışacaktır.

+3

açıklama https://blog.jetbrains.com/scala/2012/05/26/mutableimmutable-collections-prefix-convention-support/ – user7610

2

2.10.2 kabuğunda denedim ve herhangi bir uyarı görmedim.

biri "aliasing" yolu mutable.LinkedList çıkarıcı yapıyor:

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 

görüyor musunuz?

import collection.mutable 

ve herhangi değişken koleksiyonu ile kullanmak: Şimdi MutableLinkedListrefakatçi nesnesine LL noktaları

+0

Uyarı, IntelliJ Community Edition'da geliyordu, öneriniz harika çalışıyor. Teşekkürler. – ArtisanV

İlgili konular