目錄
一 函式是第一等公民
二 函式型別
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,然後返回乙個函...