大資料系列修煉-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.
如有問題,歡迎留言指正!
相關文章
- 資料分析修煉指南
- Python開發系列課程彙總 - 課程大綱Python
- 大資料公開課系列課程第二季-趙強老師-專題視訊課程大資料
- 慕課網大資料開發工程師課程大資料工程師
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 大資料應成為大學課程的重中之重大資料
- 大資料要學什麼?看看這份大資料課程大綱大資料
- 大資料系列 1:大資料技術發展歷程大資料
- Double Kill!! 資料聯邦修煉之路
- 大資料Scala系列之樣例類_Option_偏函式大資料函式
- 好程式設計師大資料教程Scala系列之繼承程式設計師大資料繼承
- 大資料——Scala擴充套件大資料套件
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料教程Scala系列之高階函式程式設計師大資料函式
- 學習大資料必須瞭解的大資料開發課程大綱大資料
- 免費課程 | 大資料系列免費視訊教程(Linux、Hadoop、Spark、Kylin、Hive等)大資料LinuxHadoopSparkHive
- 奈學教育《大資料架構師》課程大綱(1)大資料架構
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 雲端計算大資料學習路線課程大綱資料:hive入門操作大資料Hive
- 大資料入門課程:Hadoop和spark的效能比較大資料HadoopSpark
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 程式設計師內功修煉之資料結構程式設計師資料結構
- 雲端計算大資料學習路線課程大綱資料:hive內部函式大資料Hive函式
- 大資料入門到精通課程學習,大資料學習,你還得知道這些大資料
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之基礎篇程式設計師大資料
- 好程式設計師大資料教程分享Scala系列之Option_偏函式_String程式設計師大資料函式
- CSDN周賽第31期:贏圖書《打勝仗系列套裝》和特種兵課程
- 大資料之Kafka-李強強-專題視訊課程大資料Kafka
- java大資料最全課程學習筆記(5)--MapReduce精通(一)Java大資料筆記
- 前端修煉之路前端
- Kotlin修煉指南Kotlin
- 資料庫課程作業筆記資料庫筆記
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料教程分享Scala系列之檔案以及正規表示式程式設計師大資料
- 好程式設計師大資料教程Scala系列之方法的巢狀和方法多型程式設計師大資料巢狀多型