大資料系列修煉-Scala課程31
大資料系列修煉-Scala課程31
核心內容:
1、Option使用內部實戰
2、Option中的sealed關鍵字解析
1、Option使用內部實戰 |
1>在Option中有兩個具體實現的子類:
cass class Some:若在Option當中含有具體的數值,用Some來表示,
case object None:若Option當中沒有相應的數值,就用None來表示.
例項程式:
object App8
{
def main(args:Array[String]):Unit=
{
val map = Map("zhang"->88.8,"lisi"->98.8)
map.foreach(println)
for(ele<-map) println(ele)
println("----------------------")
//獲取資訊中的鍵值
for((key,_)<-map) println(key)
//獲取資訊中的value值
println("----------------------")
for((_,value)<-map) println(value)
//獲取具體的資訊值
println(map.get("zhang"))
println(map.get("li"))
//進行具體的模式匹配
println("----------------------")
map.get("zhang") match
{
case Some(value) => println("value is :" + value)
case None => println("nothing")
}
//在函式中的具體應用
println("----------------------")
def fun(infor:Any) = infor match //scala中的Any是一切型別的父類
{
case Some(value) => println("value is :" + value)
case None => println("nothing")
}
fun(map.get("zhang"))
fun(map.get("li"))
}
}
執行結果:
(zhang,88.8)
(lisi,98.8)
(zhang,88.8)
(lisi,98.8)
----------------------
zhang
lisi
----------------------
88.8
98.8
Some(88.8)
None
----------------------
value is :88.8
----------------------
value is :88.8
nothing
2、Option中sealed關鍵字的含義 |
1>如果在定義Option(Persion)的時候使用sealed關鍵字,那麼Option下面定義的所有case class和case object都必須在
同一個檔案中,即同一個包中,這樣做的好處是在用Option的具體子類case class和case object在進行模式匹配的時候,編譯器
會幫我們檢查所有的匹配項是否都已經在case列表中,不然的話將報出相應的警告.
例項程式:
sealed abstract class Persion {}
case class Student(age:Int) extends Persion
case class Worker(age:Int,salary:Double,item:Persion*) extends Persion
object App
{
def main(args:Array[String]):Unit=
{
//模式匹配在具體函式中的應用
def fun(persion:Persion) = persion match //&1
{
case Student(age) => println("age:"+"\t"+age)
//沒有列出case Worker
//case Worker(_,_,student @ Student(age),_*) => println("age:"+"\t"+student.age)
}
//測試模式匹配的具體應用
fun(Student(15))
fun(Worker(15,200.0,Student(20)))
}
}
在上面的程式中,因為使用了sealed關鍵字,&1處將報出警告:match may not be exhaustive.
如有問題,歡迎留言指正!
相關文章
- 大資料系列修煉-Scala課程30大資料
- 大資料前置課程—Scala大資料
- 資料分析修煉指南
- 大資料公開課系列課程第二季-趙強老師-專題視訊課程大資料
- Python開發系列課程彙總 - 課程大綱Python
- 慕課網大資料開發工程師課程大資料工程師
- 大資料要學什麼?看看這份大資料課程大綱大資料
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 大資料系列 1:大資料技術發展歷程大資料
- Double Kill!! 資料聯邦修煉之路
- 資料庫實戰:SQL Server系列網路課程資料集資料庫SQLServer
- 《大資料Spark商業案例與效能調優100課》全球獨家大資料課程大資料Spark
- 好程式設計師大資料教程Scala系列之繼承程式設計師大資料繼承
- 大資料Scala系列之樣例類_Option_偏函式大資料函式
- 大資料應成為大學課程的重中之重大資料
- OCP課程16:SQL之處理大資料SQL大資料
- 分享Cloudera大資料培訓課程的資訊Cloud大資料
- 大資料——Scala擴充套件大資料套件
- 學習大資料必須瞭解的大資料開發課程大綱大資料
- 企業級實戰大資料課程(一)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(二)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(三)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(四)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(五)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(六)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(七)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(八)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(九)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(十)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(十一)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(十二)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(十三)-尹成-專題視訊課程大資料
- 企業級實戰大資料課程(十四)-尹成-專題視訊課程大資料
- 奈學教育《大資料架構師》課程大綱(1)大資料架構
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料教程Scala系列之高階函式程式設計師大資料函式
- 大資料環境下的關聯規則挖掘-趙修湘-專題視訊課程大資料