Scala函數
函數是一組一起執行任務的語句。可以將代碼放到獨立的功能。如何劃分你的代碼不同功能之間,但在邏輯上,劃分通常是讓每個函數執行特定的任務。
Scala有函數和方法,我們術語說的方法和函數互換用微小的差彆。Scala方法是其中有一個名字,簽名,任選一些注釋,有的字節碼,其中如在Scala中函數是可被分配給一個變量的完整對象類的一部分。換句話說,函數,其被定義為某些對象的一個成員,被稱為方法。
函數定義可以出現在在源文件的任何地方,Scala允許嵌套函數的定義,那就是其他函數定義的內部函數定義。需要注意的最重要的一點是,Scala的函數名稱可以類似+, ++, ~, &,-, -- , , /, : 等字符。
函數聲明:
Scala的函數聲明有如下形式:
def functionName ([list of parameters]) : [return type]
如果保留關閉等號和方法體的方法為隱式聲明,抽象的封閉類型是抽象本身。
函數定義:
Scala函數定義有如下形式:
def functionName ([list of parameters]) : [return type] = { function body return [expr] }
在這裡,返回類型可以是任何有效的scala數據類型,參數列表將是用逗號和參數,返回值類型列表分離變量是可選的。非常類似於Java,一個返回語句可以在函數表達式可用情況下返回一個值。以下是這將增加兩個整數並返回的函數:
object add{ def addInt( a:Int, b:Int ) : Int = { var sum:Int = 0 sum = a + b return sum } }
函數,它不返回任何東西,可以返回這相當於在Java中void,並表示該函數不返回任何單元。Scala中不返回任何東西函數被稱為過程。以下是語法
object Hello{ def printMe( ) : Unit = { println("Hello, Scala!") } }
調用函數:
Scala提供了一些語法的變化來調用方法。以下是調用一個方法的標準方法:
functionName( list of parameters )
如果函數被對象的一個實例調用使用,那麼使用類似於Java點標記如下:
[instance.]functionName( list of parameters )
下麵是一個例子用來定義,然後調用函數:
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 } }
讓我們編譯和運行上麵的程序,這將產生以下結果:
C:/>scalac Test.scala C:/>scala Test Returned Value : 12 C:/>
Scala函數是Scala編程的核心,這就是為什麼Scala被假定為一個函數式編程語言。以下是Scala程序員理解相關Scala函數的一些重要的概念。
函數按名稱調用 | 使用命名參數函數 |
函數使用可變參數 | 遞歸函數 |
默認參數值 | 高階函數 |
嵌套函數 | 匿名函數 |
部分應用函數 | 柯裡函數 |