欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:Scala系列之:函數(shù)式編程

柚子快報邀請碼778899分享:Scala系列之:函數(shù)式編程

http://yzkb.51969.com/

Scala系列之:函數(shù)式編程

一、面向?qū)ο缶幊毯秃瘮?shù)式編程二、函數(shù)基本語法三、函數(shù)和方法的區(qū)別四、函數(shù)定義五、函數(shù)參數(shù)六、函數(shù)至簡原則七、匿名函數(shù)

一、面向?qū)ο缶幊毯秃瘮?shù)式編程

面向?qū)ο缶幊蹋?/p>

解決問題,分解對象,行為,屬性,然后通過對象的關(guān)系以及行為的調(diào)用來解決問題。對象:用戶行為:登錄、連接JDBC、讀取數(shù)據(jù)庫屬性:用戶名、密碼Scala語言是一個完全面向?qū)ο缶幊陶Z言。萬物皆對象對象的本質(zhì):對數(shù)據(jù)和行為的一個封裝。

函數(shù)式編程:

面向過程編程: 分析解決問題所需要的步驟, 然后用函數(shù)把這些步驟一一實現(xiàn);

二、函數(shù)基本語法

基本語法:

三、函數(shù)和方法的區(qū)別

為完成某一功能的程序語句的集合,稱為函數(shù)類中的函數(shù)稱為方法Scala語言可以在任何的語法結(jié)構(gòu)中聲明任何的語法函數(shù)沒有重載和重寫的概念。方法可以進(jìn)行重載和重寫Scala中函數(shù)可以嵌套定義

四、函數(shù)定義

函數(shù)1:無參,無返回值函數(shù)2:無參,有返回值函數(shù)3:有參,無返回值函數(shù)4:有參,有返回值函數(shù)5:多參,無返回值函數(shù)6:多參,有返回值

package com.bigdata

object function {

def main(args: Array[String]): Unit = {

//函數(shù)1:無參,無返回值

def f1(): Unit = {

println("函數(shù)1:無參數(shù),無返回值")

}

f1()

//函數(shù)2;無參,有返回值

def f2(): Int = {

println("函數(shù)2:無參,有返回值")

return 12

}

println(f2())

//函數(shù)3:有參數(shù),無返回值

def f3(name: String): Unit = {

println("函數(shù)3:有參數(shù),無返回值 " + name)

}

f3("好好學(xué)scala")

//函數(shù)4:有參數(shù),有返回值

def f4(name: String): String = {

println("函數(shù)4:有參數(shù),有返回值 " + name)

return "好好學(xué)scala " + name

}

println(f4("加油"))

//函數(shù)5:多參數(shù),無返回值

def f5(name: String, hobby: String): Unit = {

println("函數(shù)5:多參數(shù),無返回值")

println(name + "喜歡" + hobby)

}

f5("飛", "足球")

//函數(shù)6:多參數(shù),有返回值

def f6(a: Int,b: Int): Int = {

println("函數(shù)6:多參數(shù),有返回值")

return a + b

}

println(f6(3,6))

}

}

輸出如下所示:

函數(shù)1:無參數(shù),無返回值

函數(shù)2:無參,有返回值

12

函數(shù)3:有參數(shù),無返回值 好好學(xué)scala

函數(shù)4:有參數(shù),有返回值 加油

好好學(xué)scala 加油

函數(shù)5:多參數(shù),無返回值

飛喜歡足球

函數(shù)6:多參數(shù),有返回值

9

五、函數(shù)參數(shù)

可變參數(shù)如果參數(shù)列表中存在多個參數(shù),可變參數(shù)一般放置在最后參數(shù)默認(rèn)值,一般將有默認(rèn)值的參數(shù)放置在參數(shù)列表的后面帶名參數(shù)

package com.bigdata

object function {

def main(args: Array[String]): Unit = {

//1.可變參數(shù)

def f7(str: String*): Unit = {

println(str)

}

f7("足球")

f7("足球","羽毛球")

//2.參數(shù)列表中存在多個參數(shù),那么可變參數(shù)一般放置在最后

def f8(str1: String,str2: String*): Unit = {

println("str1: " + str1 + " str2: " + str2)

}

f8("足球","羽毛球","乒乓球")

//3.參數(shù)默認(rèn)值,一般有默認(rèn)值的參數(shù)放置在參數(shù)列表的后面

def f9(name: String = "huoying"): Unit = {

println(name)

}

f9()

f9("haizeiwang")

//4.帶名參數(shù)

def f10(name: String = "鳴人", age: Int): Unit = {

println(s"${age}歲的${name}在學(xué)習(xí)")

}

f10("佐助",20)

f10(age = 11,name= "卡卡西")

f10(age=5)

}

}

輸出如下所示:

1??勺儏?shù)

WrappedArray(足球)

1??勺儏?shù)

WrappedArray(足球, 羽毛球)

2。參數(shù)列表中存在多個參數(shù),那么可變參數(shù)一般放置在最后

str1: 足球 str2: WrappedArray(羽毛球, 乒乓球)

3。參數(shù)默認(rèn)值,一般有默認(rèn)值的參數(shù)放置在參數(shù)列表的后面

huoying

3。參數(shù)默認(rèn)值,一般有默認(rèn)值的參數(shù)放置在參數(shù)列表的后面

haizeiwang

4。帶名參數(shù)

20歲的佐助在學(xué)習(xí)

4。帶名參數(shù)

11歲的卡卡西在學(xué)習(xí)

4。帶名參數(shù)

5歲的鳴人在學(xué)習(xí)

六、函數(shù)至簡原則

return可以省略,Scala會使用函數(shù)體的最后一行代碼作為返回值如果函數(shù)體只有一行代碼,可以省略花括號返回值類型如果能夠推斷出來,那么可以省略,:和返回值類型一起省略如果有return,則不能省略返回值類型,必須指定如果函數(shù)明確聲明unit,那么即使函數(shù)體中使用return關(guān)鍵字也不起作用Scala如果期望是無返回值類型,可以省略等號如果函數(shù)無參,但是聲明了參數(shù)列表,那么調(diào)用時,小括號,可加可不加如果函數(shù)沒有參數(shù)列表,那么小括號可以省略,調(diào)用時小括號必須省略如果不關(guān)心名稱,只關(guān)心邏輯處理,那么函數(shù)名def可以省略

object function2 {

def main(args: Array[String]): Unit = {

//1.return可以省略,Scala會使用函數(shù)體的最后一行代碼作為返回值

def f1(name: String): String = {

return name

}

println(f1("足球"))

def f1bak(name :String): String = {

name

}

println(f1bak("籃球"))

// 2. 如果函數(shù)體只有一行代碼,可以省略花括號

def f2(name: String): String = name

println(f2("羽毛球"))

//3. 返回值類型如果能夠推斷出來,那么可以省略,:和返回值類型一起省略

def f3(name: String) = name

println(f3("水球"))

//4. 如果有return,則不能省略返回值類型,必須指定

def f4(name: String): String = {

return name

}

//5. 如果函數(shù)明確聲明unit,那么即使函數(shù)體中使用return關(guān)鍵字也不起作用

def f5(name: String): Unit = {

return name

}

println(f5("哈哈"))

//6. Scala如果期望是無返回值類型,可以省略等號

def f6(name: String) {

println(f6("水球"))

}

//7. 如果函數(shù)無參,但是聲明了參數(shù)列表,那么調(diào)用時,小括號,可加可不加

def f7(): Unit = {

println("強(qiáng)啊")

}

f7

// 8. 如果函數(shù)沒有參數(shù)列表,那么小括號可以省略,調(diào)用時小括號必須省略

def f8: Unit = {

println(" 8. 如果函數(shù)沒有參數(shù)列表,那么小括號可以省略,調(diào)用時小括號必須省略")

}

f8

// 9.如果不關(guān)心名稱,只關(guān)心邏輯處理,那么函數(shù)名def可以省略

def f9(name: String): Unit = {

println(name)

}

//匿名函數(shù),lambda表達(dá)式

(name: String) => {println(name)}

}

}

七、匿名函數(shù)

沒有名字的函數(shù)就是匿名函數(shù)(x:Int)=>{函數(shù)體}x:表示輸入?yún)?shù)類型Int:表示輸入?yún)?shù)類型函數(shù)體:表示具體代碼邏輯

匿名函數(shù)的至簡原則

object LambdaTest {

def main(args: Array[String]): Unit = {

val fun = (name: String) => {println(name)}

fun("籃球")

//匿名函數(shù)作為參數(shù)

def f(func: String => Unit): Unit = {

func("足球")

}

f(fun)

println("--------")

f((name: String) => {println(name)})

}

}

匿名函數(shù)的至簡原則

參數(shù)的類型可以省略,會根據(jù)形參進(jìn)行自動推導(dǎo)類型省略后,發(fā)現(xiàn)只有一個參數(shù),則圓括號可以省略。其他情況,沒有參數(shù)和參數(shù)超過1的永遠(yuǎn)不能省略圓括號。匿名函數(shù)如果只有一行,則大括號也可以省略如果參數(shù)只出現(xiàn)一次,則參數(shù)省略且后面參數(shù)可以用_代替。如果可以推斷出,當(dāng)前傳入的println是一個函數(shù)體,而不是調(diào)用語句,可以直接省略下劃線

object LambdaTest {

def main(args: Array[String]): Unit = {

val fun = (name: String) => {println(name)}

fun("籃球")

//匿名函數(shù)作為參數(shù)

def f(func: String => Unit): Unit = {

func("足球")

}

f(fun)

println("--------")

f((name: String) => {println(name)})

//1。參數(shù)的類型可以省略,會根據(jù)形參進(jìn)行自動推導(dǎo)

f((name) => {println(name)})

//2。類型省略后,發(fā)現(xiàn)只有一個參數(shù),則圓括號可以省略。其他情況,沒有參數(shù)和參數(shù)超過1的永遠(yuǎn)不能省略圓括號。

f(name => {println(name)})

//3。匿名函數(shù)如果只有一行,則大括號也可以省略

f(name => println(name))

//4. 如果參數(shù)只出現(xiàn)一次,則參數(shù)省略且后面參數(shù)可以用_代替。

f(println(_))

//5.如果可以推斷出,當(dāng)前傳入的println是一個函數(shù)體,而不是調(diào)用語句,可以直接省略下劃線

f(println)

}

}

二元函數(shù)使用示例:

object LambdaTest {

def main(args: Array[String]): Unit = {

println("-----------------")

//定義一個二元運(yùn)算函數(shù),只操作1和2兩個數(shù),具體運(yùn)算通過參數(shù)傳入

def dualFunctionOneAndTwo(fun:(Int,Int)=>Int): Int = {

fun(1,2)

}

val add = (a:Int,b:Int) => a + b

val minus = (a:Int,b:Int) => a - b

println(dualFunctionOneAndTwo(add))

println(dualFunctionOneAndTwo(minus))

//二元函數(shù)簡化

println("-------------二元函數(shù)簡化----------")

println(dualFunctionOneAndTwo(_ + _))

println(dualFunctionOneAndTwo(_ - _))

println(dualFunctionOneAndTwo(-_ + _))

}}

輸出如下所示:

-----------------

3

-1

-------------二元函數(shù)簡化----------

3

-1

1

柚子快報邀請碼778899分享:Scala系列之:函數(shù)式編程

http://yzkb.51969.com/

參考文章

評論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18912615.html

發(fā)布評論

您暫未設(shè)置收款碼

請在主題配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄