scala 基礎十四 scala case class 的使用


1.當一個類被聲明為case class時,編譯器會自動進行如下操作:

.構造器中參數如果沒有被聲明為var,則默認為val類型;

.自動創建伴生對象,同時在伴生對象中實現apply方法,這樣在使用時就不用顯式地使用new對象;

.伴生對象中同樣可以實現unapply(),從而可以將case class應用於模式匹配;

package smart.iot


abstract class Persons(name:String)

//構造器中參數如果沒有被聲明為var,則默認為val類型
case class Student(name:String,age:Int,stuentNo:Int) extends Persons(name)

case class Teacher(name:String,age:Int,teacherNo:Int) extends Persons(name)

case class Nobody(name:String) extends Persons(name)


object CaseClass
{
  def main(args: Array[String]): Unit = {
    
    //case class 會自動生成apply方法,從而省去了new
    var p:Persons=Student("james",20,1)
    
    p match{
      case p:Student=>println("class is a student")
      case p:Teacher=>println("class is a teacher")
      case p:Nobody=>println("class is nobody")
    }
    
  }
}

 2. Map 中的case class 使用

package smart.iot

class mapCase {
  
}

object mapCase
{
  def main(args: Array[String]): Unit = {
    
    var map=Map(1->2)
    
    map.get(1) match
    {
      //map 的key是Some類型的 
      case Some(_)=>println("kes is exists")
      //如果key不存在會返回None值
      case None =>println("kes is None")
      case _=>println("other")
    }
  }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM