Scala高階函式和匿名函式

2021-09-26 01:56:09 字數 1975 閱讀 7472

目錄

一 函式是第一等公民

二 函式型別

1、定義

2、**

3、執行結果

三 高階函式

1、定義

2、**

3、執行結果

四 匿名函式

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

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

3、不給匿名函式設定引數

五 匿名函式例項

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

2、把函式作為返回值。

3、把函式賦值給變數。

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

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

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

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

// 函式 f 和 值 v 作為引數,而函式 f 又呼叫了引數 v

def layout(x:int)="["+ x.tostring()+"]"

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

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))

}[10]

hello cakin24

500.0

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

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

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

package test_first

// 函式 f 和 值 v 作為引數,而函式 f 又呼叫了引數 v

def layout(x:int)="["+ x.tostring()+"]"

}

[10]

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

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

(形參列表) =>

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

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

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

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

var x = inc(7)-1

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

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

println(mul(3, 4))

如下所示:

var userdir = () =>

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

println( userdir() )

package test_first

var factor =3

val multiplier =(i:int)=> i * factor

println("multiplier(1) value = "+ multiplier(1))

println("multiplier(2) value = "+ multiplier(2))

}

原文出自

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

scala版本 2.10.5 一 函式是第一等公民 1 把函式作為實參傳遞給另外乙個函式。2 把函式作為返回值。3 把函式賦值給變數。4 把函式儲存在資料結構裡。在scala中,函式就像普通變數一樣,同樣也具有函式的型別。二 函式型別 1 定義 在scala語言中,函式型別的格式為a b,表示乙個接...

Scala函式和匿名函式

一 函式是第一等公民 1 把函式作為實參傳遞給另外乙個函式。2 把函式作為返回值。3 把函式賦值給變數。4 把函式儲存在資料結構裡。在scala中,函式就像普通變數一樣,同樣也具有函式的型別。二 函式型別 1 定義 在scala語言中,函式型別的格式為a b,表示乙個接受型別a的引數,並返回型別b的...

高階函式和匿名函式

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