Scala可变集合和"引用必须带有前缀警告"

Art*_*anV 10 scala pattern-matching scala-collections

我必须为特定用例使用可变链表.但是,我想避免"引用必须加前缀"警告.

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

import scala.collection.mutable.{LinkedList => MutableLinkedList}
Run Code Online (Sandbox Code Playgroud)

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

case MutableLinkedList() => // do Something
Run Code Online (Sandbox Code Playgroud)

我可以删除此警告的唯一方法是在空列表上执行完全限定的案例检查:

case scala.collection.mutable.LinkedList() => // do Something
Run Code Online (Sandbox Code Playgroud)

为什么第一种情况没有摆脱警告?

Ser*_*nko 19

只需导入mutable包:

import collection.mutable
Run Code Online (Sandbox Code Playgroud)

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

mutable.LinkedList(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

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

import collection.{mutable => m}
m.LinkedList(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

它也适用于模式匹配.

  • 解释https://blog.jetbrains.com/scala/2012/05/26/mutableimmutable-collections-prefix-convention-support/ (4认同)