scala基礎之方法 函式

2021-10-09 11:24:34 字數 2771 閱讀 2830

一、語法格式:

def 方法名(引數名:引數型別,引數名:引數型別):[return type] =

引數列表的引數型別不能省略,返回值型別可省略,編譯器可自動推斷其型別,返回值可不寫return,預設是{}塊表示式的值

scala>

def sum (a:

int,b:

int)

:int

=sum:

(a:int

, b:

int)

intscala> sum(1,

2)res0:

int=

3scala>

def add(a:

int,b:

int)

=add:

(a:int

, b:

int)

intscala> add(2,

3)res1:

int=

5

遞迴方法不能省略返回值

scala>

def fun(a:

int)

:int

=fun:

(a:int

)int

scala> fun(10)

res2:

int=

3628800

二、方法引數:

1、預設引數:定義方法時給引數定義乙個預設值

scala>

def sum(x:

int=

0,y:

int=1)

=sum:

(x:int

, y:

int)

intscala> sum(

)res3:

int=

1scala> sum(3,

4)res4:

int=

7

2、變長引數:方法引數不固定

格式:def 方法名(引數名:引數型別*):返回值型別 =

引數型別後面的 * 表示引數可以是0或者多個

scala>

def sum1(x:

int*):

int=

sum1:

(x:int*)

intscala> sum1(1,

2,3)

res5:

int=

6scala>

def sum(y:

int*

)=y.sum

sum:

(y:int*)

intscala> sum(

)res6:

int=

0scala> sum(3,

4)res7:

int=

7scala>

三、方法呼叫方式:

1、字尾呼叫

物件名.方法名(引數)

scala> math.abs(-1

)res9:

int=

1

2、中綴呼叫:

物件名 方法名 引數

注:如果有多個引數,用括號括起來

scala> math abs -

1res10:

int=

1

操作符即方法:所有操作符都是方法,操作符是乙個名字是符號的方法

scala>1+

2res11:

int=

3

3、花括號呼叫:適用於只有乙個引數的方法

math.abs

scala> math.abs

求絕對值

res12:

int=

2

4、無括號呼叫

方法無引數,可省略方法名後面的括號

scala>

def printscala(

)=print(

"scala"

)printscala:()

unit

scala> printscala

scala

語法:val 函式名 =(引數名:引數型別,引數名:引數型別…) =>函式體

scala>

val fun =

(a:int

,b:int

)=> a + b

fun:

(int

,int

)=>

int=

scala> fun(2,

8)res0:

int=

10

方法轉換為函式:再函式名後加 _ ,函式名和下劃線之間用空格隔開

scala>

def sum(x:

int,y:

int)

=x+y

sum:

(x:int

, y:

int)

intscala>

val s =sum _s:(

int,

int)

=>

int=

Scala基礎 函式

函式定義 def 函式名 引數名1 引數型別1,引數名2 引數型別2 返回型別 顯式定義了返回型別,才可以return def play1 1 標準形式,返回任一型別 def play2 a1 int,a2 int unit println play2 10,20 返回值為int型別 def pla...

scala基礎3 函式

常規函式 def f x int int 無返回值,使用unit def f unit unit和其他型別都可以省略,scala可以執行判斷函式的返回型別 def f f def f print f 無返回值,可以省略,unit不能寫 def f 無參函式 def f println hello f...

Scala基礎 getOrElse 方法

getorelse 主要就是防範措施,如果有值,那就可以得到這個值,如果沒有就會得到乙個預設值,個人認為早開發過程中用getorelse 方法要比用get 方法安全得多。def getorelse b1 b key a,default b1 b1 get key match從api中可以看出,傳入的...