scala的模式匹配機制,可以應用到很多場合:scala還提供了樣例類,對模式匹配進行了優化,可以快速進行匹配
匹配字串:
//todo:匹配字串 , 類似 switch
//定義乙個陣列
val arr=array("hadoop","zookeeper","spark","storm")
//隨機取陣列中的一位,使用random.nextint
val name = arr(random.nextint(arr.length))
println(name)
name match
}//輸出:
spark
大資料分布式記憶體計算框架...
匹配型別:
//todo:匹配型別
//定義乙個陣列
val arr=array("hello",1,-2.0,casedemo02)
//隨機獲取陣列中的元素
val value=arr(random.nextint(arr.length))
println(value)
value match
}//輸出:
hello
string=>hello
匹配陣列:
//匹配陣列
//匹配陣列
val arr=array(1,3,5)
arr match
}//輸出:
1...
匹配集合:
//匹配集合
val list=list(1,3)
list match
}
匹配元組:
//匹配元組
val tuple=(4,3,5)
tuple match
}
樣例類:
// 定義乙個樣例類
// 樣例類有兩個成員name、age
case class caseperson(name:string, age:int)
// 使用var指定成員變數是可變的
case class casestudent(var name:string, var age:int)
object caseclassdemo
}//輸出:
caseperson(張三,20)
caseperson(李四,21)
casestudent(小紅,24)
樣例物件:eg:樣例類和樣例物件結合模式使用 ;樣例類進行模式匹配提取引數
case class submittask(id: string, name: string)
case class heartbeat(time: long)
case object checktimeouttask
val arr = array(checktimeouttask,
heartbeat(10000),
submittask("0001", "task-0001"))
arr(random.nextint(arr.length)) match
}//輸出: 檢查超時
option型別:在scala中option型別是樣例類來表示可能存在或也可能不存在的值
option類有2個子類:
乙個是none
object testoption
println(v1)
//更好的方式
val v2 = map.getorelse("c", 0)
println(v2)
}}//輸出:
20
偏函式:被包在花括號內 , 沒有match的一組case語句 , 是乙個偏函式 ;偏函式是乙個引數和乙個返回值的函式
它是partialfunction[a, b]的乙個例項,
object testpartialfunction
def main(args: array[string]): unit =
println(result)
}}//輸出:
一list(4, 5, 6)
Scala模式匹配和樣例類
scala 有乙個十分強大的模式匹配機制,可以應用到很多場合 如 switch 語句 型別檢查等。並且 scala 還提供了樣例類,對模式匹配進行了優化,可以快速進行匹配。package cn.cheng.cases import scala.util.random val arr array ha...
Scala基礎 模式匹配和樣例類
package com.zy.scala import scala.util.random 模式匹配 object casedemo 匹配資料型別 val arr2 array hello 1,2.0,casedemo val v arr2 random.nextint 4 println v v ...
Scala集合庫 模式匹配和樣例類
package com.yz8 import org.junit.test class test test def test2 unit list.head sum list.tail val i sum ints println i 27 一般不用return返回值 一般當作break來用 tes...