方法
定義格式:
def 方法名(參數名1: 參數類型1, 參數名2: 參數類型2) : 返回類型 = {方法體}
注:1.方法的返回值類型和return能夠不寫,編譯器能夠自動推斷出來
2.對於遞歸方法,必須指定返回類型
3.若是方法沒有返回值,返回Unit類型(相似於void,也能夠不寫)
4.返回值類型有多種狀況則返回Any
5.帶有默認值參數的方法,調用時,能夠給定新值,也能夠使用默認值
6.能夠經過參數名來指定傳遞給哪個參數,這樣傳遞參數時就能夠不按照順序傳遞
7.方法沒有參數,調用時能夠省略(),若是定義時()省略,調用時則必須省略
8.可變參使用 變量名:類型* (相似Java的...)
函數
完整語法
val函數名稱 :(參數類型)=>函數返回值類型 = (參數名稱:參數類型)=>函數體
簡寫語法
val函數名稱 = (參數名稱:參數類型) => 函數體
方法和函數的區別
方法:和java的方法相似,是封裝了完成某些功能的代碼塊所歸屬某一個類或對象
函數:在Scala中,函數是頭等公民,函數是一個對象,那麼既然是對象的話,函數就能夠賦值給變量 或者 看成參數被傳遞,還能夠 使用函數打點調用方法
注:嚴格的來講,函數與方法是不一樣的東西。定義方式上也有不少的區別
可是在Scala中,函數自己是對象,方法能夠經過下劃線_轉換爲函數。
因此結論是:在Scala中
方法能夠轉換爲函數,函數本質上就是對象
函數式編程的核心思想、靈魂所在:行爲參數化!java