函數(shù)是一組執(zhí)行的語句。您可以將代碼按功能分成一個(gè)個(gè)單獨(dú)的函數(shù)。 如何在不同函數(shù)之間劃分你的代碼取決于你,但從邏輯上講,通常每個(gè)函數(shù)執(zhí)行一個(gè)特定的任務(wù)。
Scala具有兩種函數(shù),術(shù)語 - 方法和函數(shù)是可以互換的。 Scala方法是具有名稱,簽名,可選地一些注釋和一些字節(jié)碼的類的一部分,作為Scala中的函數(shù)是可以分配給變量的完整對象。 換句話說,定義為某個(gè)對象的成員的函數(shù)稱為方法。
函數(shù)定義可以出現(xiàn)在源文件的任何位置,Scala允許嵌套函數(shù)定義,也就是其他函數(shù)定義中的函數(shù)定義。有一點(diǎn)要注意的是,Scala函數(shù)的名稱可以包含符號(hào),如:+
,++
,~
,&
,-
, --
,\
,/
,:
等的字符。
Scala函數(shù)聲明具有以下形式 -
def functionName ([list of parameters]) : [return type]
如果不使用等號(hào)和方法體,則隱式聲明抽象(abstract
)方法。
Scala函數(shù)定義具有以下形式 -
語法
def functionName ([list of parameters]) : [return type] = {
function body
return [expr]
}
這里,返回類型可以是任何有效的Scala數(shù)據(jù)類型,參數(shù)列表將是由逗號(hào)分隔的變量列表,參數(shù)列表和返回類型是可選的。與Java非常相似,返回語句可以與表達(dá)式一起使用,以防函數(shù)返回值。 以下是將兩個(gè)整數(shù)相加并返回其總和的函數(shù),
語法
object add {
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
一個(gè)不返回任何東西的函數(shù)可以返回一個(gè)類似在Java中的void
類型,并表示該函數(shù)不返回任何內(nèi)容。 在Scala中不返回任何東西的函數(shù)稱為過程。
語法
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
}
}
Scala為調(diào)用方法提供了許多句法變體。以下是調(diào)用方法的標(biāo)準(zhǔn)方法 -
functionName( list of parameters )
如果使用對象的實(shí)例調(diào)用函數(shù),那么可使用與Java類似的點(diǎn)符號(hào),如下所示:
[instance.]functionName( list of parameters )
嘗試以下示例程序來定義并調(diào)用相同的函數(shù) -
示例 -
object Demo {
def main(args: Array[String]) {
println( "Returned Value : " + addInt(5,7) );
}
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
將上述程序保存在源文件:Demo.scala中,使用以下命令編譯和執(zhí)行此程序。
$ scalac Demo.scala
$ scala Demo
Returned Value : 12
Scala函數(shù)是Scala編程的核心,因此Scala被認(rèn)為是函數(shù)式編程語言。以下是與Scala函數(shù)相關(guān)的幾個(gè)重要概念,Scala程序員應(yīng)該要理解。
序號(hào) | 函數(shù) |
---|---|
1 | 按名稱調(diào)用函數(shù) |
2 | 命名參數(shù)的函數(shù) |
3 | 可變參數(shù)的函數(shù) |
4 | 遞歸函數(shù) |
5 | 默認(rèn)參數(shù)值函數(shù) |
6 | 高階函數(shù) |
7 | 嵌套函數(shù) |
8 | 匿名函數(shù) |
9 | 部分應(yīng)用函數(shù) |
10 | 柯里化函數(shù) |