8 高階函式

2022-04-29 21:12:08 字數 1235 閱讀 2348

普通函式

高階函式:引數或返回值是函式

object

a_基礎

def mymax(a:int,b:int,f:(int,int) => int)=

def myadd(a:int)=

inner _

}}

匿名函式

scala> arr.map((i:int) => i*2

:int)  //寫明返回值型別

res24: array[int] = array(2, 4

)scala> arr.map((i:int) => i*2

)    //推斷返回值型別

res25: array[int] = array(2, 4)

scala> arr.map((i) => i*2

)    //型別推斷

res29: array[int] = array(2, 4

)scala> arr.map(i => i*2

)    //再簡化

res30: array[int] = array(2, 4)

scala> arr.map(_*2

)  //i就出現了一次,最終版

res32: array[int] = array(2, 4)

柯里化定義:將原來接受兩個引數的函式變成新的接受乙個引數的函式的過程。即柯里化後的函式返回以原來第二個引數作為引數的函式

scala> def add(a:int,b:int)=a+b  //原函式

add: (a: int, b: int)int^scala> def add(a:int)=  //柯里化

add: (a: int)int =>int

scala> add(1)(2

)res0: int = 3

scala> def add(a:int)(b:int) =a +b  //柯里化簡化

add: (a: int)(b: int)int

scala> add(3)(4

)res1: int = 7

控制抽象

在scala中,一系列語句可組成不帶引數也沒有返回值的函式

object

c_控制抽象

def runinthread(block: => unit): unit =

}.start()

}}

8 函式式程式設計和高階函式

1.函式式程式設計 函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programmi...

第8章 C 函式的高階特性

一 函式過載的概念 1 同名函式,引數不同 包括型別 順序不同 2 全域性函式和類的成員函式同名不算過載,因為函式的作用域不同 全域性函式被調時應加 標誌 二 成員函式的過載 覆蓋與隱藏 1 成員函式被過載的特徵 a 相同的範圍 在同乙個類中 b 函式名字相同 c 引數不同 d virtual關鍵字...

第 8 章 C 函式的高階特性索引

對比於c 語言的函式,c 增加了過載 overloaded 內聯 inline const 和virtual四種新機制。其中過載和內聯機制既可用於全域性函式也可用於類的成員函式,const 與 virtual 機制僅用於類的成員函式。過載和內聯肯定有其好處才會被c 語言採納,但是不可以當成免費的午餐...