2021 2023年寒假學習進度09

2022-09-14 03:18:11 字數 3552 閱讀 1190

今天學習了scala的函式式程式設計

函式式程式設計

1 函式基礎

1.1 函式基本語法

1)基本語法

2)案例實操

需求:定義乙個函式,實現將傳入的名稱列印出來。

def main(args: array[string]): unit =

// (2)函式呼叫

// 函式名(引數)

f("hello world")

}1.2 函式和方法的區別

1)核心概念

(1)為完成某一功能的程式語句的集合,稱為函式。

(2)類中的函式稱之方法。

2)案例實操

(1)scala 語言可以在任何的語法結構中宣告任何的語法

(2)函式沒有過載和重寫的概念;方法可以進行過載和重寫

(3)scala 中函式可以巢狀定義

object test

def main(args: array[string]): unit =

test()

def test(name:string):unit=

//(3)scala 中函式可以巢狀定義

def test2(): unit =}}

}1.3 函式定義

1)函式定義

(1)函式 1:無參,無返回值

(2)函式 2:無參,有返回值

(3)函式 3:有參,無返回值

(4)函式 4:有參,有返回值

(5)函式 5:多參,無返回值

(6)函式 6:多參,有返回值

2)案例實操

def main(args: array[string]): unit =

test1()

// 函式 2:無參,有返回值

def test2():string=

println(test2())

// 函式 3:有參,無返回值

def test3(s:string):unit=

test3("jinlian")

// 函式 4:有參,有返回值

def test4(s:string):string=

println(test4("hello "))

// 函式 5:多參,無返回值

def test5(name:string, age:int):unit=

test5("dalang",40)

}1.4 函式引數

(1)可變引數

(2)如果引數列表中存在多個引數,那麼可變引數一般放置在最後

(3)引數預設值,一般將有預設值的引數放置在引數列表的後面

(4)帶名引數

def main(args: array[string]): unit =

// 有輸入引數:輸出 array

test("hello", "scala")

// 無輸入引數:輸出 list()

test()

// (2)如果引數列表中存在多個引數,那麼可變引數一般放置在最後

def test2( name : string, s: string* ): unit =

test2("jinlian", "dalang")

// (3)引數預設值

def test3( name : string, age : int = 30 ): unit =

// 如果引數傳遞了值,那麼會覆蓋預設值

test3("jinlian", 20)

// 如果引數有預設值,在呼叫的時候,可以省略這個引數

test3("dalang")

// 一般情況下,將有預設值的引數放置在引數列表的後面

def test4( *** : string = "男", name : string ): unit =

// scala 函式中引數傳遞是,從左到右

//test4("wusong")

//(4)帶名引數

test4(name="ximenqing")

}1.5 函式至簡原則(重點)

函式至簡原則:能省則省

1)至簡原則細節

(1)return 可以省略,scala 會使用函式體的最後一行**作為返回值

(2)如果函式體只有一行**,可以省略花括號

(3)返回值型別如果能夠推斷出來,那麼可以省略(:和返回值型別一起省略)

(4)如果有 return,則不能省略返回值型別,必須指定

(5)如果函式明確宣告 unit,那麼即使函式體中使用 return 關鍵字也不起作用

(6)scala 如果期望是無返回值型別,可以省略等號

(7)如果函式無參,但是宣告了引數列表,那麼呼叫時,小括號,可加可不加

(8)如果函式沒有引數列表,那麼小括號可以省略,呼叫時小括號必須省略

(9)如果不關心名稱,只關心邏輯處理,那麼函式名(def)可以省略

2)例def main(args: array[string]): unit =

println(f("hello"))

// 至簡原則:能省則省

//(1) return 可以省略,scala 會使用函式體的最後一行**作為返回值

def f1( s : string ): string =

println(f1("hello"))

//(2)如果函式體只有一行**,可以省略花括號

def f2(s:string):string = s + " jinlian"

//(3)返回值型別如果能夠推斷出來,那麼可以省略(:和返回值型別一起 省略)

def f3( s : string ) = s + " jinlian"

println(f3("hello3"))

//(4)如果有 return,則不能省略返回值型別,必須指定。

def f4() :string =

println(f4())

//(5)如果函式明確宣告 unit,那麼即使函式體中使用 return 關鍵字也 不起作用

def f5(): unit =

println(f5())

//(6)scala 如果期望是無返回值型別,可以省略等號

// 將無返回值的函式稱之為過程

def f6()

println(f6())

//(7)如果函式無參,但是宣告了引數列表,那麼呼叫時,小括號,可加可 不加

def f7() = "dalang7"

println(f7())

println(f7)

//(8)如果函式沒有引數列表,那麼小括號可以省略,呼叫時小括號必須省 略

def f8 = "dalang"

//println(f8())

println(f8)

//(9)如果不關心名稱,只關心邏輯處理,那麼函式名(def)可以省略

def f9 = (x:string)=>

def f10(f:string=>unit) =

f10(f9)

println(f10((x:string)=>))

}高階函式的內容現在初步理解,能夠做到看到理解什麼意思,也能自己編寫一部分。

待之後使用更加熟練時會分享經驗

2021 2023年寒假學習進度08

今天繼續學習scala 今天主要了解了泛型的使用,並且學習了vue,後續會總結vue的學習 1 協變和逆變 1 語法 class mylist t class mylist t class mylist t 不變 2 說明 協變 son 是 father 的子類,則 mylist son 也作為 m...

2021 2023年寒假學習進度19

今天完成了spark基礎實驗四,1 熟悉spark 的rdd 基本操作及鍵值對操作 2 熟悉使用rdd 程式設計解決實際具體問題的方法。作業系統 ubuntu16.04 spark 版本 2.1.0 請根據給定的實驗資料,在 spark shell 中通過程式設計來計算以下內容 1 該系總共有多少學...

寒假學習進度

今天就是踐行spark的安裝了。安裝spark 配置檔案spark env.sh 驗證spark是否安裝成功。grep 命令進行過濾。下面是關於hdfs的命令 上傳檔案 hdfs dfs put src dest 從本地的src位置上傳到hdfs的dest位置,src可以有多個,空格隔開 複製檔案 ...