作為引數的函式 匿名函式 高階函式

2022-04-04 20:28:11 字數 1304 閱讀 6162

函式作為乙個變數傳入到了另乙個函式中,那麼該作為引數的函式的型別是:function1,即:(引數型別) => 返回型別

object funparameter  }
1) map(plus(_)) 中的 plus(_) 就是將 plus 這個函式當做乙個引數傳給了 map,_這裡代表從集合中 遍歷出來的乙個元素。

plus _ 則代表的是將函式的引用傳入,跟plus(_) 含義不一樣。

2) plus(_) 這裡也可以寫成 plus 表示對 array(1,2,3,4) 遍歷,將每次遍歷的元素傳給 plus 的 x 3) 進行 3 + x 運算後,返回新的 int ,並加入到新的集合 result1 中

4) def map[b, that](f: a => b) 的宣告中的 f: a => b 乙個函式

沒有名字的函式就是匿名函式,可以通過函式表示式來設定匿名函式

object anonymousefunction  包括

val triple = (x: double) =>

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

} }val f1 = (n1: int, n2: int ) =>

println("f1 型別=" + f1) println(f1(10, 30))

能夠接受函式作為引數的函式,叫做高階函式 (higher-order function)。可使應用程式更加健壯

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

println(res)

}}

匿名函式當函式當返回引數,函式當柯里化

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

}}

python 把函式作為引數 高階函式

在實際使用中,我們有時希望將函式作為引數傳遞給另乙個方法使用。比如裝飾器實際就是函式呼叫函式 使用函式當做入參 那就可以把方法名a當做入參傳遞給方法b,呼叫的時候直接用 方法名 來呼叫方法內容 import time def run func print time.strftime y m d h ...

高階函式和匿名函式

1.高階函式 高階函式就是把函式當成引數傳遞的函式。例如 def add x,y,f return f x f y print add 4,3,abs 結果是 7 map 函式 map 函式的python內建的高階函式,他接受乙個函式f 和引數list,並把list的元素傳遞給函式f,然後返回乙個函...

Python高階函式 匿名函式

當我們在傳入函式時,有些時候,不需要顯示定義函式,直接傳入匿名函式更方便。在python中,對匿名函式提供了有限支援。還是以map 函式為例,計算f x x 2時,除了定義乙個f x 的函式外,還可以直接傳入匿名函式 list map lambda x x x,1,1,2,3,4,5,6,7,8,9...