我是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
答案 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