21高階函式

2021-10-02 22:26:48 字數 1379 閱讀 3617

引數和返回值都是函式。

//傳入引數是函式;

val arr = array(1,2,3,4)

val fun = (x:int) => x*2

val res = arr.map(fun)

//傳入匿名函式;

val res2 = arr.map((x:int) => x*2)

val res3 = arr.map(_*2)

//返回值是函式

def urlbuilder(flag:boolean,name:string):(string,string)=>string=

閉包是乙個函式,返回值依賴於函式外部的乙個或多個變數。

閉包通常來講,可以簡單的認為是可以訪問乙個函式裡邊的區域性變數或另外乙個函式。

var num = 5

val res = (x:int) =>

println(num) //5

println(res(4)) //40

println(num) //10

柯里化就是把接收多個引數的函式變成接收單一引數的函式,返回乙個接收餘下引數的新函式。

//建立乙個普通函式

def add(x:int,y:int) = x+y

println(add(1,2)

//柯里化後的方法

def add(x:int)(y:int) = x+y

println(add(1)(2))

//implicit關鍵字進行隱式轉換

def add(x:int)(implicit y:int=3) = x+y

println(add(4))

//模擬柯里化的實現過程

def first(x:int) = (y:int) => x+y

val second = first(1)

val res = second(2)

println(res)

//現階段柯里化的應用有fold和map

val list = list(1,2,3)

println(list.foldleft(0)(_+_))

def fatorial(x:int):int = 

fact(x,1)

}println("5的階乘為:"+factorial(5))

def makelist[a](x:a,length:int):list[a] = 

println(makelist("aa",3)) //list(aa,aa,aa)

println(makelist(5,4)) //list(5,5,5,5)

21 函式基礎

1 什麼是函式 具備某一功能的工具 函式 工具的使用 事先準備好好工具 函式的定義 遇到應用場景拿來就用 函式的呼叫 2 為何要有函式 1 程式的組織結構不清晰 可讀性差 2 如果要用到重複的功能,只能拷貝功能的實現 冗餘 3 可擴充套件性差 3 如何用函式 函式的使用原則 先定義,後呼叫 定義函式...

2 1 搬移函式

源 1 重構前 2class account314 return result 15 16else 1720 21 22private 23 accounttype m type 24int m ndaysoverdrawn 25 搬移函式 1 class accounttype213 return...

python 函式高階 python 函式高階

形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...