首页 文章

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

提问于
浏览
9

我必须为特定用例使用可变链表 . 但是我想避免 "Reference must be prefixed" 警告 .

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

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

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

case MutableLinkedList() => // do Something

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

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

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

2 回答

  • 2

    只需导入 mutable 包:

    import collection.mutable
    

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

    mutable.LinkedList(1, 2, 3)
    

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

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

    它也适用于模式匹配 .

  • 17

    我在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 伴侣对象

相关问题