在scala中悴品,模式匹配的熟練使用可以給讓程序看起來更加的簡潔易懂禀综,該特性有很多使用方法简烘,下邊介紹一些不太常用的。
1定枷、集合類型
對于集合類型孤澎,可以用來匹配元素
x match{
case List(1,2,3) =>
case List(1,_*)=>//用于匹配指定元素開頭的集合
case List(0,_,_)=>//匹配0開頭長度為3的List
case s::rest=>用于獲取集合中的第一個元素,及其之后的list
case list:List[Int]=>//相當(dāng)于case list.List[_]欠窒,在模式匹配中覆旭,會抹除集合元素類型
case Nil=>//匹配空List
case _=>//安全起見,匹配上述條件不符合的情況
}
2岖妄、數(shù)組
基本操作與集合相類似型将,空數(shù)組使用case Array()=>進(jìn)行匹配。值得注意的是荐虐,在數(shù)組中進(jìn)行元素類型匹配不會進(jìn)行類型擦除七兜,也就是說形如case Array[Int]=>對于匹配Int數(shù)組是有效的。
3福扬、變量綁定
對于一些比較復(fù)雜的匹配元素腕铸,如果希望在匹配成功之后可以使用改元素的整體,那么可以使用變量綁定方式
x match{
case Sum("abc",e @ Sum("abc,_))=>e
case _=>
}
使用@并在@之前使用一個變量名铛碑,就可以在=>之后使用變量名代替該值狠裹,上述使用了e來代替Sum("abc,_)
4、類型匹配
盡量使用模式匹配來代替isInstanceOf進(jìn)行類型判斷
case i:Int=>
5亚茬、模式保護(hù)
case a:Int a>20=>
的方式可以實(shí)現(xiàn)對匹配結(jié)果進(jìn)行一次判斷