Scala高階 匿名函式和高階函式

2021-08-20 05:14:08 字數 2291 閱讀 4415

scala版本:2.10.5

一 函式是第一等公民

1、把函式作為實參傳遞給另外乙個函式。

2、把函式作為返回值。

3、把函式賦值給變數。

4、把函式儲存在資料結構裡。

在scala中,函式就像普通變數一樣,同樣也具有函式的型別。

二 函式型別

1、定義

在scala語言中,函式型別的格式為a =>b,表示乙個接受型別a的引數,並返回型別b的函式。

例子:int => string 是把整型對映為字串的函式型別

2、**

package

test_first

object

demo

extends

def add(x

:int,y

:int)=x

+y

println

(operate

(add

))

def greeting

()=(

name

:string

)=>

val test

=greeting

()

println

(test

("cakin24"

))

def multiplyby

(factor

:double

)=(x

:double

)=>

factor

*x

val x

=multiplyby(10

)

println(x

(50))

}

3、執行結果

[10]

8hello cakin24

500.0

三 高階函式

1、定義

用函式作為形參或返回值的函式,稱為高階函式。

def operate(f:(int,int)=>int)=

def greeting() =(name:string) =>

2、**

package

test_first

object

demo

extends

3、執行結果

[10]

四 匿名函式

就是函式常量,也稱為函式文字量。

在scala裡,匿名函式的定義格式為

(形參列表) =>

箭頭左邊是引數列表,右邊是函式體。

使用匿名函式後,我們的**變得更簡潔了。

1、匿名函式為1個引數。

var inc = (x:int) => x+1

以上例項的 inc 現在可作為乙個函式,使用方式如下:

var x = inc(7)-1

2、匿名函式中定義多個引數:

var mul = (x: int, y: int) => x*y

mul 現在可作為乙個函式,使用方式如下:

println(mul(3, 4))

3、不給匿名函式設定引數,如下所示:

var userdir = () =>

userdir 現在可作為乙個函式,使用方式如下:

println( userdir() )

五 匿名函式例項

package

test_first

object

demo

extends

六 匿名函式例項

multiplier(1) value = 3

multiplier(2) value = 6

參考:

Scala高階函式和匿名函式

目錄 一 函式是第一等公民 二 函式型別 1 定義 2 3 執行結果 三 高階函式 1 定義 2 3 執行結果 四 匿名函式 1 匿名函式為1個引數。2 匿名函式中定義多個引數 3 不給匿名函式設定引數 五 匿名函式例項 1 把函式作為實參傳遞給另外乙個函式。2 把函式作為返回值。3 把函式賦值給變...

高階函式和匿名函式

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

scala 高階函式 高階運算元

定義 引數為函式的函式稱為高階函式 在 scala 中,函式是一等公民,函式可以像物件一樣進行傳遞 函式可以賦值給變數 函式賦值給變數例子 def main args array string unit def foo 上面的例子中,foo 函式並沒有引數,我們寫乙個可以傳入引數的函式傳遞給變數 d...