Scala 模式匹配和樣例類

2021-10-01 06:16:25 字數 2663 閱讀 5117

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...