方法的定義 如果沒有=和{}包裹的方法體,那麼該方法被隱式申明為抽象(abstract)方法,包含它的類就是抽象類。 當輸入相同類型的參數個數無法確定時,可以使用變長參數,如:def sum(args : Int*) = {for(arg <- args) println(arg)}。 如果方法體直 ...
方法的定義
def functionName([參數列表]) : [return type] = { function body return [] }
- 如果沒有=和{}包裹的方法體,那麼該方法被隱式申明為抽象(abstract)方法,包含它的類就是抽象類。
abstract class Test{ def hi(x : Int):Int def he(x : Int){x + 1} }
- 當輸入相同類型的參數個數無法確定時,可以使用變長參數,如:def sum(args : Int*) = {for(arg <- args) println(arg)}。
- 如果方法體直接包裹在了花括弧裡面,而沒有使用=連接,則方法的返回值就是(),其類型就是Unit,這樣的方法就被稱之為過程。可以為過程指定返回值類型為Unit,此時方法體中有return語句,方法返回值任然是Unit。
- 不寫明返回值的類型,程式會自行判斷,最後一行代碼的執行結果為返回值。
函數
Scala 方法是類的一部分,而函數是一個對象可以賦值給一個變數。
Scala 中的函數則是一個完整的對象,Scala 中的函數其實就是繼承了 Trait 的類的對象。
Scala 中使用 val 語句可以定義函數,def 語句定義方法。
定義方式
1 class Test1{ 2 def met(x : Int) = x + 10 3 val fun = (x : Int) => x + 10 4 }
- 方法是一個以def開頭的帶有參數列表(可以無參數列表)的一個邏輯操作塊,這正如object或者class中的成員方法一樣。(上面有定義說明)
- 函數是一個賦值給一個變數(或者常量)的匿名方法(帶或者不帶參數列表),並且通過=>轉換符號跟上邏輯代碼塊的一個表達式。=>轉換符號後面的邏輯代碼塊的寫法與method的body部分相同。
- 方法名意味著方法調用,函數名只是代表函數自身。
- 方法可以沒有參數列表頁可以是空的參數列表。
- 函數必須設置參數列表,可以是空的參數列表,但一定要設置。
方法和函數的相互轉換
- 把 x => func(x) 簡化為 func _ 或 func(_) 的過程稱為函數轉換成方法
- 把 func(_)或 func _ 展開為 x => func(x) 的過程為方法轉換成函數