11

对于特定的用例,我必须使用可变链表。但是我想避免“引用必须加前缀”警告。

别名导入似乎是一个解决方案:

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

它适用于大多数情况,除了模式匹配一​​个空的 LinkedList,这仍然会产生警告:

case MutableLinkedList() => // do Something

我可以删除此警告的唯一方法似乎是对空列表进行完全合格的案例检查:

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

为什么第一个案例没有摆脱警告?

4

2 回答 2

20

只需导入mutable包:

import collection.mutable

并将其与任何可变集合一起使用:

mutable.LinkedList(1, 2, 3)

或者,如果您更喜欢更简洁的变体:

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

它也适用于模式匹配。

于 2013-08-13T07:28:03.020 回答
2

我在 2.10.2 shell 中尝试过,没有看到任何警告。

“别名”mutable.LinkedList提取器的一种方法是:

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 = scala.collection.mutable.LinkedList$@5798795f

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

看?现在 LL 指向MutableLinkedList 伴生对象

于 2013-08-12T23:23:21.600 回答