尝试使用没有case类的scala提取器时出错

时间:2016-04-28 14:56:09

标签: scala

我是scala的新手,只是学习编码。谁能告诉我这里我做错了什么

          class ForExtractor(val i : Int , j:Int){
    //def unapply(i:Int) = true
  }
  object ForExtractor{
    def unapply(i:Int ):Option[(Int , Int)] = if(i>2)Some(1,2) else None
  }
  def extractorTest(obj : ForExtractor) = {
    obj match {
      case ForExtractor(4,2)=> true ;
      case e => false
    }
  }

我在案例行中看到的错误是

    pattern type is incompatible with expected type ; found:Int ,
    ForExtractor

1 个答案:

答案 0 :(得分:1)

我能猜到的是你要测试val i 你的ForExtractor中的大小是否大于2,在这种情况下返回Some((1,2))(注意你的错误在这里你返回Some(1,2))。

你的unapply方法应该作为ForExtractor的参数,所以最后unapply方法看起来像这样:

 def unapply(forex: ForExtractor):Option[(Int , Int)] = 
         if(forex.i > 2)Some((1,2)) else None
然后我们得到:

scala> extractorTest(new ForExtractor(1, 2))
res1: Boolean = false