首頁(yè)技術(shù)文章正文

Scala的方法和函數(shù)講解【黑馬程序員】

更新時(shí)間:2021-03-08 來(lái)源:黑馬程序員 瀏覽量:

1577370495235_學(xué)IT就到黑馬程序員.gif

   

在Scala中,它和Java一樣也是擁有方法和函數(shù)。Scala的方法是類的一部分,而函數(shù)是一個(gè)對(duì)象可以賦值給一個(gè)變量。換句話來(lái)說(shuō),在類中定義的函數(shù)即是方法。

Scala 中可以使用 def語(yǔ)句和val 語(yǔ)句定義函數(shù),而定義方法只能使用def 語(yǔ)句。下面我們分別對(duì)Scala的方法和函數(shù)進(jìn)行講解。

1.方法

Scala方法的定義格式如下:

def functionName ([參數(shù)列表]):[return type]={  function body

  return [expr]}


在上面代碼中可以看出,Scala的方法是由多個(gè)部分組成。具體如下:

def:是Scala方法的關(guān)鍵字,并且是固定不變的,一個(gè)方法的定義是由def關(guān)鍵字開始的。functionName:是Scala 方法的方法名。([參數(shù)列表]):[return type]:是Scala方法的可選參數(shù)列表,每個(gè)參數(shù)列表中的每個(gè)參數(shù)都有一個(gè)名字,參數(shù)名后跟著冒號(hào)和參數(shù)類型。function body:是方法的主體。return [expr]:是Scala方法的返回類型,可以是任意合法的 Scala 數(shù)據(jù)類型。若沒(méi)有返回值,則返回類型為“Unit”。

下面,定義一個(gè)方法add,實(shí)現(xiàn)兩個(gè)數(shù)相加求和,示例代碼如下:

def add(a:Int,b:Int):Int={

  var sum:Int = 0

  sum = a + b

  return sum

}


Scala的方法調(diào)用的格式如下:

//沒(méi)有使用實(shí)例的對(duì)象調(diào)用格式

functionName(參數(shù)列表)

//方法使用實(shí)例的對(duì)象來(lái)調(diào)用,我們可以使用類似java的格式 (使用“.”號(hào))

[instance.]functionName( 參數(shù)列表 )


下面,在類Test中,定義一個(gè)方法addInt,實(shí)現(xiàn)兩個(gè)整數(shù)相加求和。在這里,我們通過(guò)“類名.方法名(參數(shù)列表)”來(lái)進(jìn)行調(diào)用,示例代碼如下:

scala> :paste                # 多行輸入模式的命令

  // Entering paste mode (ctrl-D to finish)  

  object Test{

     def addInt(a:Int,b:Int):Int={

       var sum:Int=0

       sum=a+b

       return sum

    }

  }

  // Exiting paste mode, now interpreting.

  defined object Test

  scala> **Test.addInt(4,5)**

  res0: Int = 9

2.函數(shù)

在Scala中,由于使用def語(yǔ)句定義函數(shù)的格式以及調(diào)用函數(shù)的格式均與方法一樣,因此,這里不做贅述。然而,Scala函數(shù)也是有區(qū)別于方法的,可以使用val語(yǔ)句定義函數(shù)的格式,并且函數(shù)必須要有參數(shù)列表,而方法可以沒(méi)有參數(shù)列表。接下來(lái),我們來(lái)介紹使用val語(yǔ)句定義和調(diào)用函數(shù)的具體格式。

Scala函數(shù)的定義格式如下:

val functionName ([參數(shù)列表]) =>  function body
}


下面,定義一個(gè)函數(shù)addInt,實(shí)現(xiàn)兩個(gè)整數(shù)相加求和,示例代碼如下:

val addInt( a:Int, b:Int )=>a+b


3.方法轉(zhuǎn)換成函數(shù)

方法轉(zhuǎn)換成函數(shù)的格式如下:

val f1 = m _


在上述的格式中,方法名m后面緊跟一個(gè)空格和下劃線,是為了告知編譯器將方法m轉(zhuǎn)換成函數(shù),而不是要調(diào)用這個(gè)方法。下面,定義一個(gè)方法m,實(shí)現(xiàn)將方法m轉(zhuǎn)成函數(shù),示例代碼如下:

scala> def m(x:Int,y:Int):Int =x*y     # 方法

m: (x: Int,y: Int)Int

scala> **val f=m _**

f:(Int,Int) => Int = (function2)      # 函數(shù)

}


小提示:

Scala方法的返回值類型可以不寫,編譯器可以自動(dòng)推斷出來(lái),但是對(duì)于遞歸函數(shù)來(lái)說(shuō),必須要指定返回類型。




猜你喜歡:

Scala的控制結(jié)構(gòu)語(yǔ)句有哪幾種?各語(yǔ)法格式介紹

Scala子類繼承父類的方法

Scala在使用聲明值和變量時(shí)的注意事項(xiàng)有哪些?

黑馬程序員大數(shù)據(jù)培訓(xùn)課程

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!