目錄
方法
定義方法
回傳值型別推斷
方法
一個類可以有自己的方法,scala中的方法和Java方法類似,但scala與Java定義方法的語法是不一樣的,
定義方法
語法
def methodName (引數名:引數型別, 引數名:引數型別) : [return type] = {
// 方法體:一系列的代碼
}
[!NOTE]
- 引數串列的引數型別不能省略(因為之前定義變數的時候可以省略, 這里不要混淆了,因為變數給了初始值,可以根據初始值推斷型別)
- 回傳值型別可以省略,由scala編譯器自動推斷
- 回傳值可以不寫return,默認就是{}塊運算式的值
示例
定義一個方法,實作兩個整形數值相加,回傳相加后的結果
呼叫該方法
參考代碼
scala> def add(a:Int, b:Int) = a + b
m1: (x: Int, y: Int)Int
scala> add(1,2)
res10: Int = 3
回傳值型別推斷
scala定義方法可以省略回傳值,由scala自動推斷回傳值型別,這樣方法定義后更加簡潔,
[!DANGER]
定義遞回方法,不能省略回傳值型別
因為, 遞回呼叫是一層一層向內走, 當前那一層無法推斷回傳型別, 會導致一系列問題.
示例
定義遞回方法(求階乘)
比如求10的階乘
10 * 9 * 8 * 7 * 6 * ... * 1
參考代碼
scala> def m2(x:Int) = {
| if(x<=1) 1
| else m2(x-1) * x
| }
<console>:13: error: recursive method m2 needs result type
else m2(x-1) * x
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/283200.html
標籤:其他
