scala學習總結11(函式)

2021-09-28 11:53:05 字數 2702 閱讀 5268

偏函式:

val list =(1

,2,3

,4,"zhc"

)val addone =

newpartialfunction

[any,int]

val list1 = list.

collect

(addone)

println

(list1)

簡化形式1:

def fun:partialfunction[any,int]

=val list =

list(1

,2,3

,4,"zhy").

collect

(fun)

簡化形式2:

val list =

list(1

,2,3

,4,"zhy"

).collect

作為引數的函式
def plus

(i: int)

= i +

1val arr =

array(1

,2,3

).map(

plus

(_))

println

(arr.

mkstring

(","

))

匿名函式
val a =

(x: double)

=>

2* x

println(a

(2.1

))

示例2:

val fun =

(a: int,b: int)

=>

println

("fun型別是"

+fun)

//fun型別是

println

(fun(1

,2))

高階函式
def test

(f:double =

> double,n: double)

=def sum

(d: double)

:double =

val res =

test

(sum,

6.66

)println

(res)

def fun

(a: int)

=val res =

fun(1)

(2)println

(res)

引數(型別)推斷

示例:

val list =

list(1

,2,3

,4)list.

map(

(a: int)

=> a +1)

list.

map(a =

> a +1)

list.

map(_ +1)

list.

reduce

(_ + _)

// 輸出10

閉包

示例:

def fun

(a :int)

=(b: int)

=> a - b

val f =

fun(20)

//f就是閉包函式

println(f

(1)+

","+f(

2))//輸出:19,18

函式柯里化
def fun

(a: int,b: int)

= a - b//常規方法

println

(fun(2

,1))

def fun1

(a: int)

=(b: int)

=> a - b//閉包

println

(fun1(2

)(1)

)def fun2

(a: int)

(b: int)

= a - b//函式柯里化

println

(fun2(2

)(1)

)//比較兩個字串在忽略大小寫的情況下是否相等

def fun3

(s1: string)

(s2: string)

:boolean = s1.tolowercase == s2.tolowercase

抽象控制
def fun

(f:()=

> unit)=}

.start()

}fun

遞迴相關

scala中迴圈不建議使用while和do…while,而建議使用遞迴。

//求最大值

def getmax

(list list[int]

)

//翻轉字串

def reverse

(s: string)

:string =

//求階層

def factorial

(n: int)

: long=

scala 函式總結

字面量 字面量 直接在源 裡書寫的 值 例如 變數scala宣告乙個變數的基本語法 val 變數名 變數型別 初始值 var 變數名 變數型別 初始值 初始值可以是字面量或變數名 scala中,函式成為了和普通的變數一樣的 頭等公民 可以像其他任何資料型別的值一樣的被傳遞和操作。函式的值也叫做函式的...

Scala程式設計11 高階函式 重點掌握

高階函式,即定義時將引數型別設定為函式,並在定義的地方進行呼叫,在使用時再將需要的函式體直接寫入或通過變數方式傳入進去 第一種 外面定義乙個函式,在使用時直接呼叫指向函式體的變數來呼叫此函式,使用起來和普通函式沒太多差別,直接傳值 如 交換兩個數 先定義乙個普通函式,實現兩個數的交換 def swa...

scala學習筆記 理解函式

定義乙個函式 scala def foo x int x 2 foo x int int可以採用匿名引數 scala def foo int int 2 foo int int這個函式的型別是int int scala var bar foo bar int int scala var bar in...