Scala的sealed關鍵字

sealed 關鍵字表示,其修飾的trait只能在當前文件裏頭被繼承編程

sealed trait Answer
case object Yes extends Answer
case object No extends Answer


sealed abstract 表示,其修飾的class,只能在當前文件裏頭被繼承scala

def process(request:Trade){
      request match{
        case Buy(name) => println("buy:"+name)
        case Sale(name) => println("sale:"+name)
      }
   }
   
   val op = Buy("IBM")
   process(op)


一般用在case class,case class 有兩個特色:一、不用new,用括號便可產生實例 二、構造器參數默認是valcode

用sealed修飾這樣作的目的是告訴scala編譯器在檢查模式匹配的時候,讓scala知道這些case的全部狀況,scala就可以在編譯的時候進行檢查,看你寫的代碼是否有沒有漏掉什麼沒case到,減小編程的錯誤。繼承


如上例子,若是沒有case sale的話,會警告,match may not be exhaustive. It would failed on the following input:Sale(_)input

相關文章
相關標籤/搜索