一 函式是第一等公民
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...