Scala 函數(shù)
函數(shù)是一組一起執(zhí)行一個任務的語句。 您可以把代碼劃分到不同的函數(shù)中。如何劃分代碼到不同的函數(shù)中是由您來決定的,但在邏輯上,劃分通常是根據(jù)每個函數(shù)執(zhí)行一個特定的任務來進行的。
Scala 有函數(shù)和方法,二者在語義上的區(qū)別很小。Scala 方法是類的一部分,而函數(shù)是一個對象可以賦值給一個變量。換句話來說在類中定義的函數(shù)即是方法。
我們可以在任何地方定義函數(shù),甚至可以在函數(shù)內(nèi)定義函數(shù)(內(nèi)嵌函數(shù))。更重要的一點是 Scala 函數(shù)名可以由以下特殊字符:+, ++, ~, &,-, -- , \, /, : 等。
函數(shù)聲明
Scala 函數(shù)聲明格式如下:
def functionName ([參數(shù)列表]) : [return type]
如果你不寫等于號和方法主體,那么方法會被隱式聲明為"抽象(abstract)",包含它的類型于是也是一個抽象類型。
函數(shù)定義
方法定義由一個def 關鍵字開始,緊接著是可選的參數(shù)列表,一個冒號":" 和方法的返回類型,一個等于號"=",最后是方法的主體。
Scala 函數(shù)定義格式如下:
def functionName ([參數(shù)列表]) : [return type] = { function body return [expr] }
以上代碼中 return type 可以是任意合法的 Scala 數(shù)據(jù)類型。參數(shù)列表中的參數(shù)可以使用逗號分隔。
以下函數(shù)的功能是將兩個傳入的參數(shù)相加并求和:
object add{ def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
如果函數(shù)沒有返回值,可以返回為 Unit,這個類似于 Java 的 void, 實例如下:
object Hello{ def printMe( ) : Unit = { println("Hello, Scala!") } }
函數(shù)調(diào)用
Scala 提供了多種不同的函數(shù)調(diào)用方式:
以下是調(diào)用方法的標準格式:
functionName( 參數(shù)列表 )
如果函數(shù)使用了實例的對象來調(diào)用,我們可以使用類似java的格式 (使用 . 號):
[instance.]functionName( 參數(shù)列表 )
以上實例演示了定義與調(diào)用函數(shù)的實例:
object Test { 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 } }
執(zhí)行以上代碼,輸出結果為:
$ scalac Test.scala $ scala Test Returned Value : 12
Scala也是一種函數(shù)式語言,所以函數(shù)是 Scala 語言的核心。以下一些函數(shù)概念有助于我們更好的理解 Scala 編程:
函數(shù)概念解析接案例 | ||
---|---|---|
函數(shù)傳名調(diào)用(Call-by-Name) | 指定函數(shù)參數(shù)名 | |
函數(shù) - 可變參數(shù) | 遞歸函數(shù) | |
默認參數(shù)值 | 高階函數(shù) | |
內(nèi)嵌函數(shù) | 匿名函數(shù) | |
偏應用函數(shù) | 函數(shù)柯里化(Function Currying) |
更多建議: