Scala高階函數和匿名函數

目錄

一 函數是第一等公民

二 函數類型

1、定義

2、代碼

3、運行結果

三 高階函數

1、定義

2、代碼

3、運行結果

四 匿名函數

1、匿名函數爲1個參數。

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

3、不給匿名函數設置參數

五 匿名函數實例


一 函數是第一等公民

1、把函數作爲實參傳遞給另外一個函數。

2、把函數作爲返回值。

3、把函數賦值給變量。

4、把函數存儲在數據結構裏。

在Scala中,函數就像普通變量一樣,同樣也具有函數的類型。

二 函數類型

1、定義

在Scala語言中,函數類型的格式爲A =>B,表示一個接受類型A的參數,並返回類型B的函數。

例子:Int => String 是把整型映射爲字符串的函數類型

2、代碼

package test_first

object DemoextendsApp{
println( apply( layout,10))
// 函數 f 和 值 v 作爲參數,而函數 f 又調用了參數 v
def apply(f:Int=>String, v:Int)= f(v)
def layout(x:Int)="["+ x.toString()+"]"

def operate(f:(Int,Int)=>Int)={f(4,4)}
def add(x:Int,y:Int)=x+y
println(operate(add))


def greeting()=(name:String)=>{"hello"+" "+ name}
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)={f(4,4)}

def greeting() =(name:String) =>{"hello" + " " + name}

2、代碼

package test_first

object DemoextendsApp{
println( apply( layout,10))
// 函數 f 和 值 v 作爲參數,而函數 f 又調用了參數 v
def apply(f:Int=>String, v:Int)= f(v)

def layout(x:Int)="["+ x.toString()+"]"

}

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 = () => { System.getProperty("user.dir") }

userDir 現在可作爲一個函數,使用方式如下:

println( userDir() )

 

五 匿名函數實例

package test_first

object DemoextendsApp{
var factor =3
val multiplier =(i:Int)=> i * factor
println("multiplier(1) value = "+ multiplier(1))
println("multiplier(2) value = "+ multiplier(2))
}

 

 

原文出自

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章