scala:类型模式加工

时间:2016-03-03 13:46:12

标签: scala

初学者的另一个问题。

我试图理解下一段代码是如何工作的。 现在确定第二个案例陈述的含义是什么。

   obj match {
        case _: BigInt => Int.MaxValue  
        case BigInt => -1       
    }

在第一种情况下,我会将对象与BingInt类型匹配 在第二种情况下匹配的是什么?

1 个答案:

答案 0 :(得分:6)

第一个case匹配任何值BigInt。第二个case匹配BigInt随播广告对象。

def test(obj: Any) = obj match {
  case _: BigInt => Int.MaxValue
  case BigInt => -1
}

scala> test(BigInt(1))
res2: Int = 2147483647

scala> test(BigInt)
res3: Int = -1

那就是说,除非你有任何具体的理由来检查你是否将BigInt同伴对象传递给你,否则你真正想要它的可能性是第一种情况。模式匹配。