模式比對的類型
for控制結構中的模式比對
option類型模式比對
1 常量模式
2 變量模式
3 構造器模式
4 序列(sequence)模式
序列模式指的是像array、list這樣的序列集合進行模式比對
5 元組模式
6 類型模式
上述代碼如果不用模式比對的話,要實作相同的功能,可以通過下列代碼實作:
7 變量綁定模式
正規表達式中的模式比對:
在前面的課程内容中,我們曾經提到過option類型,option類型有兩個子類,分别是some和none(單例對象),本小節将從模式比對的角度對option類進行重新思考。
下面給出的是option類在scala語言中的類層次結構:

option類其實是一個sealed class
下面給出的分别是some及none的源碼:
下面的代碼示範了其如何應用到模式比對中:
前面我們看到:none是一個case object,它同some一樣都extends option類,隻不過some是case class,對于case class我們已經很熟悉了,那case object它又是怎麼樣的呢?假設我們定義了以下類:
上述代碼編譯後,生成的位元組碼檔案如下:
單從編譯後生成的類來看,它們之間似乎實作方式都一樣,那到底是什麼樣的呢?
class a的反編譯後的代碼如下:
case class b對應的位元組碼檔案反編譯後如下:
case object caseobject對應的反編譯後的内容:
對比上述代碼不難看出,case object與case class所不同的是,case object對應反編譯後的caseobject$.cl
ass中不存在apply、unapply方法,這是因為none不需要建立對象及進行内容提取,從這個角度講,它被定義為case object是十分合理的。
添加公衆微信号,可以了解更多最新spark、scala相關技術資訊