Scala 有方法與函數,二者在語義上的差別很小。Scala 方法是類的一部分,而函數是一個對象可以指派給一個變量。換句話來說在類中定義的函數即是方法。
Scala 中的方法跟 Java 的類似,方法是組成類的一部分。
Scala 中的函數則是一個完整的對象,Scala 中的函數其實就是繼承了 Trait 的類的對象。
Scala 中使用 val 語句可以定義函數,def 語句定義方法。
注意:有些翻譯上函數(function)與方法(method)是沒有差別的。
Scala 方法聲明格式如下:
如果你不寫等于号和方法主體,那麼方法會被隐式聲明為抽象(abstract),包含它的類型于是也是一個抽象類型。
方法定義由一個 def 關鍵字開始,緊接着是可選的參數清單,一個冒号 : 和方法的傳回類型,一個等于号 = ,最後是方法的主體。
Scala 方法定義格式如下:
以上代碼中 <b>return type</b> 可以是任意合法的 Scala 資料類型。參數清單中的參數可以使用逗号分隔。
以下方法的功能是将兩個傳入的參數相加并求和:
object add{
def addInt( a:Int, b:Int ) : Int = {
var sum:Int = 0
sum = a + b
return sum
}
}
如果方法沒有傳回值,可以傳回為 <b>Unit</b>,這個類似于 Java 的 <b>void</b>, 執行個體如下:
object Hello{
def printMe( ) : Unit = {
println("Hello, Scala!")
Scala 提供了多種不同的方法調用方式:
以下是調用方法的标準格式:
如果方法使用了執行個體的對象來調用,我們可以使用類似java的格式 (使用 <b>.</b> 号):
以上執行個體示範了定義與調用方法的執行個體:
object Test {
def main(args: Array[String]) {
println( "Returned Value : " + addInt(5,7) );
執行以上代碼,輸出結果為:
Scala 也是一種函數式語言,是以函數是 Scala 語言的核心。以下一些函數概念有助于我們更好的了解 Scala 程式設計:
函數概念解析接案例
函數傳名調用(Call-by-Name)
指定函數參數名
函數 - 可變參數
遞歸函數
預設參數值
高階函數
内嵌函數
匿名函數
偏應用函數
函數柯裡化(Function Currying)