scala 方法與函數(shù)
scala 有方法與函數(shù),二者在語義上的區(qū)別很小。scala 方法是類的一部分,而函數(shù)是一個對象可以賦值給一個變量。換句話來說在類中定義的函數(shù)即是方法。
scala 中的方法跟 java 的類似,方法是組成類的一部分。
scala 中的函數(shù)則是一個完整的對象,scala 中的函數(shù)其實就是繼承了 trait 的類的對象。
scala 中使用 val 語句可以定義函數(shù),def 語句定義方法。
class test{ def m(x: int) = x + 3 val f = (x: int) => x + 3 }
注意:有些翻譯上函數(shù)(function)與方法(method)是沒有區(qū)別的。
1. 方法聲明
scala 方法聲明格式如下:
def functionname ([參數(shù)列表]) : [return type]
如果你不寫等于號和方法主體,那么方法會被隱式聲明為抽象(abstract),包含它的類型于是也是一個抽象類型。
2. 方法定義
方法定義由一個 def 關鍵字開始,緊接著是可選的參數(shù)列表,一個冒號 : 和方法的返回類型,一個等于號 = ,最后是方法的主體。
scala 方法定義格式如下:
def functionname ([參數(shù)列表]) : [return type] = { function body return [expr] }
以上代碼中 return type 可以是任意合法的 scala 數(shù)據(jù)類型。參數(shù)列表中的參數(shù)可以使用逗號分隔。
以下方法的功能是將兩個傳入的參數(shù)相加并求和:
object add{ ? ?def addint( a:int, b:int ) : int = { ? ? ? var sum:int = 0 ? ? ? sum = a + b ? ? ? return sum ? ?} }
如果方法沒有返回值,可以返回為 unit,這個類似于 java 的 void, 范例如下:
object hello{ ? ?def printme( ) : unit = { ? ? ? println("hello, scala!") ? ?} }
3. 方法調(diào)用
scala 提供了多種不同的方法調(diào)用方式:
以下是調(diào)用方法的標準格式:
functionname( 參數(shù)列表 )
如果方法使用了范例的對象來調(diào)用,我們可以使用類似java的格式 (使用 . 號):
[instance.]functionname( 參數(shù)列表 )
以上范例演示了定義與調(diào)用方法的范例:
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í)行以上代碼,輸出結(jié)果為:
$ 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) |
- JDBC 教程
- JDBC 驅(qū)動類型
- JDBC 連接數(shù)據(jù)庫范例
- JDBC 連接數(shù)據(jù)庫步驟
- JDBC Statement, PreparedStatement 和 CallableStatement
- JDBC ResultSet 結(jié)果集
- JDBC Resultset 結(jié)果集范例
- JDBC 事務保存點范例
- Scala 教程
- Scala 簡介
- Scala 類和對象
- Scala 文件 I/O
- Spring 教程
- Spring 模塊
- Spring 依賴注入
- Spring 自動裝配
- Spring MVC教程
- Spring MVC表單標簽庫
- Spring security