2013-08-12 24 views
8

Tôi phải sử dụng danh sách được liên kết có thể thay đổi được cho một trường hợp sử dụng cụ thể. Tuy nhiên, tôi muốn tránh "Tham chiếu phải được đặt trước" cảnh báo.Bộ sưu tập có thể thay đổi Scala và "Tham chiếu phải là cảnh báo tiền tố"

Aliasing nhập khẩu dường như là một giải pháp:

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

nó hoạt động trên hầu hết các trường hợp ngoại trừ trong mô hình kết hợp một LinkedList rỗng, đây vẫn tạo ra cảnh báo:

case MutableLinkedList() => // do Something 

cách duy nhất tôi có thể xóa cảnh báo này có vẻ là để thực hiện kiểm tra trường hợp đủ điều kiện trên danh sách trống:

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

Tại sao trường hợp đầu tiên không loại bỏ cảnh báo?

Trả lời

15

Chỉ cần nhập mutable gói:

import collection.mutable 

và sử dụng nó với bất kỳ bộ sưu tập có thể thay đổi:

mutable.LinkedList(1, 2, 3) 

hoặc nếu bạn thích biến thể ngắn gọn hơn:

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

Nó cũng sẽ hoạt động với mẫu phù hợp.

+3

giải thích https://blog.jetbrains.com/scala/2012/05/26/mutableimmutable-collections-prefix-convention-support/ – user7610

2

Tôi đã thử nó trong vỏ 2.10.2 và không thấy bất kỳ cảnh báo nào.

Một cách để "răng cưa" các mutable.LinkedList vắt được thực hiện:

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 

Thấy không? Bây giờ điểm LL đến đối tượng MutableLinkedListđồng

+0

Cảnh báo đã xuất hiện trong IntelliJ Community Edition, đề xuất của bạn hoạt động tuyệt vời. Cảm ơn. – ArtisanV

Các vấn đề liên quan