Scala函式和匿名函式

2021-08-11 03:55:16 字數 2281 閱讀 9201

一 函式是第一等公民

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] 8

hello 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 把函式賦值給變...

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

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

Scala命名引數和匿名函式

通常情況下,傳入引數與函式定義的引數列表一一對應 命名引數允許使用任意順序傳入引數 def printname first string,last string prints john smith printname john smith printname first john last smit...