中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

口碑好的專業(yè)網(wǎng)站建設(shè)手機(jī)助手

口碑好的專業(yè)網(wǎng)站建設(shè),手機(jī)助手,2023青島疫情最新消息今天,商城網(wǎng)站建設(shè)報(bào)價(jià)文章目錄 每日一句正能量章節(jié)概要1.5 Scala的模式匹配與樣例類1.5.1 模式匹配字符匹配匹配字符串守衛(wèi)匹配類型匹配數(shù)組、元組、集合 1.5.2 樣例類 課外補(bǔ)充偏函數(shù) 每日一句正能量 “成功的秘訣,在于對(duì)目標(biāo)的執(zhí)著追求。”——愛迪生 無論是在工作、學(xué)習(xí)、還是生活中&…

文章目錄

  • 每日一句正能量
  • 章節(jié)概要
  • 1.5 Scala的模式匹配與樣例類
    • 1.5.1 模式匹配
      • 字符匹配
      • 匹配字符串
      • 守衛(wèi)
      • 匹配類型
      • 匹配數(shù)組、元組、集合
    • 1.5.2 樣例類
  • 課外補(bǔ)充
    • 偏函數(shù)

每日一句正能量

“成功的秘訣,在于對(duì)目標(biāo)的執(zhí)著追求。”——愛迪生

無論是在工作、學(xué)習(xí)、還是生活中,只有對(duì)目標(biāo)有著真正的執(zhí)著追求,才有可能取得成功。愛迪生是個(gè)成功的發(fā)明家,也是一個(gè)努力不懈、堅(jiān)持不斷的實(shí)踐者。他曾說過:“沒有人能夠一次成功,成功的秘訣就在于多次失敗后依然不放棄對(duì)目標(biāo)的執(zhí)著追求?!?/p>

所以,只有對(duì)自己的目標(biāo)有著強(qiáng)烈的追求,才能在取得成果的路上堅(jiān)持不懈地去奮斗,才能不怕失敗,不放棄,不斷地提高自己的能力和技巧。每一次失敗都是向成功更近一步的機(jī)會(huì),只要時(shí)刻保持目標(biāo)的執(zhí)著追求,堅(jiān)信自己一定能夠取得成功,就一定會(huì)邁向勝利。

章節(jié)概要

Spark是專為大規(guī)模數(shù)據(jù)處理而設(shè)計(jì)的快速通用的計(jì)算引擎,它是由Scala語言開發(fā)實(shí)現(xiàn)的,關(guān)于大數(shù)據(jù)技術(shù),本身就是計(jì)算數(shù)據(jù),而Scala既有面向?qū)ο蠼M織項(xiàng)目工程的能力,又具備計(jì)算數(shù)據(jù)的功能,同時(shí)Spark和Scala的緊密集成,本書將采用Scala語言開發(fā)Spark程序,所以學(xué)好Scala將有助于我們更好的掌握Spark框架。

1.5 Scala的模式匹配與樣例類

Scala提供了強(qiáng)大的模式匹配機(jī)制,最常見的模式匹配就是math語句,主要應(yīng)用于從多個(gè)分支中進(jìn)行選擇的場(chǎng)景。

1.5.1 模式匹配

  • Scala中的模式匹配是由match case組成,它類似于Java中的switch case。
  • match關(guān)鍵字主要用來描述一個(gè)表達(dá)式,位于表達(dá)式位置的后面。
  • case關(guān)鍵字主要用來描述和表達(dá)式結(jié)果進(jìn)行比較后的模式。

創(chuàng)建模式匹配的語法格式如下:

表達(dá)式 match {case 模式1 => 語句1case 模式2 => 語句2case 模式3 => 語句3
}

下面,定義一個(gè)方法matchTest(),方法的參數(shù)是一個(gè)整形字段,而方法的調(diào)用則是對(duì)參數(shù)進(jìn)行模式匹配,若參數(shù)匹配的是1,則打印輸出“one”;若參數(shù)匹配的是2,則打印輸出“two”;若參數(shù)匹配的是_,則打印輸出“many”,具體實(shí)現(xiàn)代碼如下所示。

package cn.itcast.scalaobject Ch12_PatternMatch {def main(args: Array[String]): Unit = {println(matchTest(5))}//模式匹配def matchTest(x:Int):String = x match{case 1 => "one"case 2 => "two"case _ => "many"}
}

結(jié)果如下圖所示:
在這里插入圖片描述

字符匹配

def main(args: Array[String]): Unit = {val charStr = '6'charStr match {case '+' => println("匹配上了加號(hào)")case '-' => println("匹配上了減號(hào)")case '*' => println("匹配上了乘號(hào)")case '/' => println("匹配上了除號(hào)")//注意。所有的模式匹配都必須最終匹配上一個(gè)值,如果沒有匹配上任何值,就會(huì)報(bào)錯(cuò)// case _  => println("都沒有匹配上,我是默認(rèn)值")}}

匹配字符串

def main(args: Array[String]): Unit = {val arr = Array("hadoop", "zookeeper", "spark")val name = arr(Random.nextInt(arr.length))name match {case "hadoop"    => println("大數(shù)據(jù)分布式存儲(chǔ)和計(jì)算框架...")case "zookeeper" => println("大數(shù)據(jù)分布式協(xié)調(diào)服務(wù)框架...")case "spark" => println("大數(shù)據(jù)分布式內(nèi)存計(jì)算框架...")case _ => println("我不認(rèn)識(shí)你...")}}

守衛(wèi)

模式匹配當(dāng)中,我們也可以通過條件進(jìn)行判斷def main(args: Array[String]): Unit = {var ch = "500"var sign = 0ch match {case "+" => sign = 1case "-" => sign = 2case _ if ch.equals("500") => sign = 3case _ => sign = 4}println(ch + " " + sign)
}

匹配類型

def main(args: Array[String]): Unit = {//注意泛型擦除,在模式匹配當(dāng)中的類型匹配中,除了Array類型以為,所有的其他的數(shù)據(jù)類型都會(huì)被擦除掉val a = 3val obj = if(a == 1) 1else if(a == 2) "2"else if(a == 3) BigInt(3)else if(a == 4) Map("aa" -> 1)else if(a == 5) Map(1 -> "aa")else if(a == 6) Array(1, 2, 3)else if(a == 7) Array("aa", 1)else if(a == 8) Array("aa")val r1 = obj match {case x: Int => xcase s: String => s.toIntcase BigInt => -1 //不能這么匹配case _: BigInt => Int.MaxValuecase m: Map[String, Int] => "Map[String, Int]類型的Map集合"case m: Map[_, _] => "Map集合"case a: Array[Int] => "It's an Array[Int]"case a: Array[String] => "It's an Array[String]"case a: Array[_] => "It's an array of something other than Int"case _ => 0}println(r1 + ", " + r1.getClass.getName)}

匹配數(shù)組、元組、集合

def main(args: Array[String]): Unit = {val arr = Array(0, 3, 5)arr match {case Array(0, x, y) => println(x + " " + y)case Array(0) => println("only 0")//匹配數(shù)組以1 開始作為第一個(gè)元素case Array(1, _*) => println("0 ...")case _ => println("something else")}val lst = List(3, -1)lst match {case 0 :: Nil => println("only 0")case x :: y :: Nil => println(s"x: $x y: $y")case 0 :: tail => println("0 ...")case _ => println("something else")}val tup = (1, 3, 7)tup match {case (1, x, y) => println(s"1, $x , $y")case (_, z, 5) => println(z)case _ => println("else")}
}

注意:在Scala中列表要么為空(Nil表示空列表)要么是一個(gè)head元素加上一個(gè)tail列表。

9 :: List(5, 2) :: 操作符是將給定的頭和尾創(chuàng)建一個(gè)新的列表

注意::: 操作符是右結(jié)合的,如9 :: 5 :: 2 :: Nil相當(dāng)于 9 :: (5 :: (2 :: Nil))

1.5.2 樣例類

  • 在Scala中,使用case關(guān)鍵字來定義的類被稱為樣例類。
  • 樣例類是一種特殊的類,經(jīng)過優(yōu)化可以被用于模式匹配。

樣例類首先是類,除此之外它是為模式匹配而優(yōu)化的類,樣例類用case關(guān)鍵字進(jìn)行聲明。樣例類主要是使用在我們后面的sparkSQL當(dāng)中,通過樣例類來映射我們的表當(dāng)中的對(duì)象

定義形式:

  • case class 類型,是多例的,后面要跟構(gòu)造參數(shù)。形式如下。
 case class Student(name:String)
  • case object 類型,是單例的。 形式如下。
case object Person

下面,使用case關(guān)鍵字來定義樣例類Person,并將該樣例類應(yīng)用到模式匹配中,具體代碼如下所示。

package cn.itcast.scalaobject Ch13_CaseClass {//定義樣例類case class Person(name:String,age:Int)def main(args: Array[String]): Unit = {//創(chuàng)建樣例類對(duì)象val alice = new Person("Alice", 25)val bob = new Person("Bob", 32)val charlie = new Person("Charlie", 33)//val tom = Person("tom",26)  //這種方式創(chuàng)建也可以for(person <- List(alice,bob,charlie)){//模式匹配person  match {case Person("Alice",25) => println("Hi Alice")case Person("Bob", 32) => println("Hi Bob")case Person("Charlie", 33) => println("Hi Charlie")//找不到以上匹配時(shí)case Person(name,age) => println("Name:"+name+"\t"+"Age:"+age)}}}
}

結(jié)果如下圖所示:
在這里插入圖片描述

課外補(bǔ)充

偏函數(shù)

被包在花括號(hào)內(nèi)沒有match的一組case語句是一個(gè)偏函數(shù),它是PartialFunction[A, B]的一個(gè)實(shí)例,A代表輸入?yún)?shù)類型,B代表返回結(jié)果類型,常用作輸入模式匹配,偏函數(shù)最大的特點(diǎn)就是它只接受和處理其參數(shù)定義域的一個(gè)子集。

val func1: PartialFunction[String, Int] = {case "one" => 1case "two" => 2// case _ => -1}def func2(num: String) : Int = num match {case "one" => 1case "two" => 2case _ => -1}def main(args: Array[String]) {println(func1("one"))println(func2("one"))//如果偏函數(shù)當(dāng)中沒有匹配上,那么就會(huì)報(bào)錯(cuò),我們可以通過isDefinedAt來進(jìn)行判斷// println(func1("three"))println(func1.isDefinedAt("three"))if(func1.isDefinedAt("three")){println("hello world")}else{println("world hello")}
}

轉(zhuǎn)載自:https://blog.csdn.net/u014727709/article/details/133977059
歡迎start,歡迎評(píng)論,歡迎指正

http://www.risenshineclean.com/news/3587.html

相關(guān)文章:

  • 江蘇揚(yáng)州疫情最新消息哈爾濱百度搜索排名優(yōu)化
  • 村政府可以做網(wǎng)站么企業(yè)宣傳冊(cè)
  • php網(wǎng)站開發(fā)實(shí)用技術(shù)答案產(chǎn)品推廣渠道
  • 南寧公司網(wǎng)站模板建站b站推廣是什么意思
  • 網(wǎng)站設(shè)計(jì)工具網(wǎng)絡(luò)營(yíng)銷推廣軟件
  • 桃子網(wǎng)站惠州搜索引擎優(yōu)化
  • 友匯網(wǎng)站建設(shè)一般多少錢自媒體發(fā)布平臺(tái)
  • 網(wǎng)站建設(shè)怎么申請(qǐng)域名網(wǎng)址seo優(yōu)化排名
  • 西安網(wǎng)站建設(shè)的費(fèi)用企業(yè)策劃
  • 阜城網(wǎng)站建設(shè)公司啟信聚客通網(wǎng)絡(luò)營(yíng)銷策劃
  • 網(wǎng)站建設(shè)公司創(chuàng)意軟文范例800字
  • 做民宿上幾家網(wǎng)站好廣點(diǎn)通推廣登錄入口
  • 鄭州專業(yè)做網(wǎng)站手機(jī)百度高級(jí)搜索入口
  • 網(wǎng)站模板怎么打開網(wǎng)絡(luò)營(yíng)銷策略的內(nèi)容
  • 青島外貿(mào)網(wǎng)站建設(shè)哪家好網(wǎng)絡(luò)事件營(yíng)銷
  • 福州網(wǎng)站建設(shè)方案長(zhǎng)沙seo外包
  • 安全月考評(píng)哪個(gè)網(wǎng)站做北京網(wǎng)站建設(shè)公司案例
  • 簡(jiǎn)單設(shè)計(jì)網(wǎng)站百度官網(wǎng)推廣
  • java做網(wǎng)站軟件太原seo關(guān)鍵詞排名優(yōu)化
  • 建立門戶網(wǎng)站的步驟網(wǎng)絡(luò)廣告投放網(wǎng)站
  • 交友網(wǎng)站app推廣今日熱點(diǎn)新聞15條
  • 南陽網(wǎng)站排名優(yōu)化公司企業(yè)網(wǎng)站推廣可以選擇哪些方法
  • 濱江區(qū)網(wǎng)站開發(fā)公司百度競(jìng)價(jià)托管一月多少錢
  • vs中新建網(wǎng)站和新建web項(xiàng)目的區(qū)別電腦培訓(xùn)學(xué)校網(wǎng)站
  • 網(wǎng)站建設(shè)開發(fā)公司有哪些企業(yè)站seo報(bào)價(jià)
  • wamp 設(shè)置多個(gè)網(wǎng)站愛鏈在線
  • 網(wǎng)站設(shè)計(jì)需要考慮哪些基本原則知乎關(guān)鍵詞排名優(yōu)化
  • 如何制作手機(jī)免費(fèi)網(wǎng)站模板下載排名網(wǎng)
  • 日本網(wǎng)站服務(wù)器安徽網(wǎng)站關(guān)鍵字優(yōu)化
  • 網(wǎng)站建設(shè)基礎(chǔ)策劃書做游戲推廣怎么找客戶