1. 程式人生 > >Scala基礎02-Scala方法和函式及其區別

Scala基礎02-Scala方法和函式及其區別

Scala運算子及函式和方法的呼叫

但有一點特別的:這些操作符在scala中實際上是方法。例如:
a + b
是如下方法呼叫的簡寫:
a.+(b)
a 方法 b可以寫成 a.方法(b)。
在這裡插入圖片描述

方法的呼叫(2.後面按下table,會有以下相關提示)
在這裡插入圖片描述

定義方法和函式

1 定義方法

def m1(x:Int,y:Int):Int=x+y

定義方法用def關鍵字,m1為方法名稱,x:Int 和 y:Int為引數列表,後面的Int為返回值型別,x+y為方法體。
方法的返回值型別可以不寫,編譯器可以自動推斷出來,但是對於遞迴函式,必須指定返回型別。

示例:通過遞迴方法求一個數的階乘。

def m3(x:Int):Int={
if(x==1) 1
else x*m3(x-1)
}

在這裡插入圖片描述

2 定義函式

定義函式的基本語法:
val f1=(x:Int,y:Int)=>x*y
//呼叫:
f1(3,4)
在這裡插入圖片描述

3 方法和函式的區別

函式是一個物件,有N個引數,就繼承FunctionN這個類。共到Function22,函式最多可以帶22個引數。
在這裡插入圖片描述

函式具備該物件的一些方法:
apply curried toString tupled
在這裡插入圖片描述

而方法就是指方法就是物件中的方法。不具備函式的以上特性。

4 方法轉換成函式

如果想把方法轉換成一個函式,可以用方法名,後面跟上下劃線的方式。

val 函式=方法名_