Scala Case类和对象
Scala是沒有Java中的switch case語法的,相對應地,scala提供了更加強大的match case 語法,即模式piper,類替代switch case,match case也被稱為模式匹配。
Scala的matach case與Java的switch case最大的不同點在于,java的switch case僅能匹配變量的值,比如1,2,3等;而scala的match case可以匹配各種情況,比如變量的類型、集合的元素、有值或無值。
Match case 的語法如下:
如果值為_下劃線,則代表了不滿足以上所有情況下的默認情況下如何處理。此外,match case中,只要一個case分支滿足并處理了,就不會繼續判斷下一個case分支了,這點與Java不同,Java的switch case需要用break阻止。
Matach case語法最基本的應用,就是對變量的值進行模式匹配。
【案例:成績評級】
在模式匹配中使用if守衛:scala的模式匹配語法,有一個特點在于,可以在Case后的條件判斷中,不僅僅只是提供一個值,而是可以在值后面再加一個if守衛,進行雙重過濾。
【案例:成績評級(升級版)】
Case類知識常規類,默認情況下是不可變的,可以通過模式匹配分解。
它使用相等equal方法在結構上比較實例,不使用new關鍵字實例化對象。
默認情況下,case類中列出的所有參數默認使用public和immutable修飾符
【語法】
【scala case類實例】
將上面的代碼保存到源文件Demo.scala中,使用以下命令變異并執行代碼。
Case類支持模式匹配。所以,可以在模式中使用它。以下是Case類和模式的示例:
【Scala Case類和模式匹配示例】
沒有參數的case類將被聲明為case對象而不是case類。默認情況下,case對象是可序列化的。
將上面的代碼保存到源文件Demo.scala中,使用以下命令編譯并執行代碼:
Scala中提供了一種特殊的類,用case class進行聲明,中文也可以稱作樣例類。Case class其實有點類似于Java中的Javabean的概念。即只定義field,并且由scala編譯時自動提供getter和setter方法,但是沒有method.
Case class的主構造函數接收的參數通常不需要使用var或val修飾,scala自動就會使用val修飾,但是如果你自己使用var修飾,那么還是會按照var來定義。
Scala自動為case class定義了伴生對象,也就是object,并且定義了apply()方法,該方法接收主構造函數中相同的參數,并返回case class對象。
【案例:學校門禁】
總結
以上是生活随笔為你收集整理的Scala Case类和对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IDEA的查询引用、调用关系图的功能
- 下一篇: Scala伴生类和伴生对象