【问题标题】:scala Nil type matchs against arraybufferscala Nil 类型与 arraybuffer 匹配
【发布时间】:2014-05-28 17:46:27
【问题描述】:

我在 scala 中发现了一个奇怪的工作构造:

(ArrayBuffer[Int]():Seq[Int]) match {
   case Nil => "whoo"
   case _ => "nayyy"
}

返回

"whoo"

显然这已经部分工作for Vectors,但不是模式匹配。有人可以解释一下吗? Nildoes not have any method named unapply。这怎么可能?

【问题讨论】:

    标签: scala pattern-matching null arraybuffer unapply


    【解决方案1】:

    对于对象,不涉及unapply(如果您使用了假设的case Nil() => ...,情况就是这样)。而是使用equals 方法检查相等性。

    集合的平等是根据它们的元素来定义的。例如

    List(1,2,3) == Vector(1,2,3)  // true!
    

    Nil 也是如此,它等于任何空序列:

    Vector() == Nil  // true
    collection.mutable.ArrayBuffer() == Nil  // true
    

    【讨论】:

      猜你喜欢
      • 2015-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-25
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多