Scala之函式式程式設計高階

2021-09-24 22:06:22 字數 2587 閱讀 6501

/*

給你乙個集合 val list = list(1, 2, 3, 4, "abc") ,請完成如下要求:

將集合 list 中的所有數字+1,並返回乙個新的集合

要求忽略掉 非數字 的元素,即返回的 新的集合 形式為 (2, 3, 4, 5)

*/object partialfundemo01

//模式匹配

def addone2( i :any ):any =

} def f1(n: any): boolean =

def f2(n: int): int =

//將 any->int [map]

def f3(n: any): int =

}

object partialfundemo02 

println("v1=" + v1)

v1.asinstanceof[int] + 1}}

//使用偏函式

//說明:如果是使用偏函式,則不能使用 map,應該使用 collect

//說明一下偏函式的執行流程

//1. 遍歷 list 所有元素

//3. 每得到乙個 element,放入到新的集合,最後返回

val list2 = list.collect(partialfun)

println("list2" + list2)

}}

object partialfun03 

val list = list(1, 2, 3, 4, 1.2, 2.4, 1.9f, "hello")

val list2 = list.collect(partialfun2)

println("list2=" + list2)

//第二種簡寫形式

val list3 = list.collect

println("list3=" + list3) // (2,3,4,5)

}}

object anonymousefunction  包括

val triple = (x: double) =>

println("triple" + triple(3)) // 9.0

println(triple)

}}

object higherorderfunction 

//sum 是接收乙個 double,返回乙個 double

def sum(d: double): double =

def mod(d:double): int =

val res = test(sum, mod, 5.0) //

println("res=" + res) // 2.0

}}

object higherorderfunction2 

//分步執行

//f1 就是 (y: int) => 3 - y

val f1 = minusxy(3)

println("f1 的型別=" + f1)

println(f1(1)) // 2

println(f1(9)) // -6

//也可以一步到位的呼叫

println(minusxy(4)(9)) // -5

}}

object parameterinfer 

def f1(n1:int ,n2:int): int =

}

object parameterinfer 

}

object parameterinfer 

}

object currydemo02 

//類 隱式類 ( 可以參考前面講解內容)

implicit class testeq(s: string)

}val str1 = "hello"

println(str1.checkeq("hello")(eq))

//匿名函式

println(str1.checkeq("hello")((s1: string, s2: string) => s1.equals(s2)))

//在看乙個簡寫形式

println(str1.checkeq("hello")(_.equals(_)))

}}

object abstractcontrol 

}.start()

}myruninthread

//簡寫形式 可以把小括號去掉

def myruninthread2(f1: => unit) =

}.start()

}//對於沒有輸入,也沒有返回值函式,可以簡寫成如下形式

myruninthread2

}}

object abstractcontrol2 

}mywhile(x > 0)

}}

Scala高階特性 函式式程式設計

目標一 深入理解高階函式 目標二 深入理解隱式轉換 高階函式 概念scala混合了物件導向和函式式的特性,我們通常將可以做為引數傳遞到方法中的表示式叫做函式。在函式式程式語言中,函式是 頭等公民 高階函式包含 作為值的函式 匿名函式 閉包 柯里化等等。作為值的函式 可以像任何其他資料型別一樣被傳遞和...

SCALA函式式程式設計

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 scala的語法規定,將函式賦值給變數時,必須在函式後面加上空格和下劃線 正常宣告乙個帶有乙個字串型別引數,並返回unit型別的方法 sca...

Scala函式式程式設計

知識點1.scala的柯里化技術,允許將接受多個引數的函式,轉變為接受單一引數的函式 2.柯里化的作用可以允許使用者自建控制結構 object demo03 f1 a int,b int int def f11 a int b int f11 a int b int int def f2 a int...