寫給小師妹的Scala學習筆記(第二週)

第二週

這一週的內容主要圍繞着“函數”來進行。本來想順着書的內容往下講,不過那樣就沒有自己的東西了,所以,就想到哪裏寫到哪裏吧~

我們從一個最普通的函數開始。它的作用跟函數名一樣,你給它輸入什麼,它給你返回什麼。

def echo(x : Int) : Int = {
    x
}

在語法上:

  1. 函數定義以def開頭。
  2. 函數的返回值類型在函數名之後。
  3. 注意那個等號。
  4. 不需要顯式的寫return。(請問是爲什麼呢)

當然,這個例子只是爲了引出接下來的例子,因爲普通的版本,只能接受Int作爲輸入和輸入,如果要支持任意類型,就需要讓函數支持泛型。

def echo[T](x : T) : T = {
    x
}

通過在函數名之後的中括號和T,可以支持單個參數的泛型,如果要支持多個,可以寫成類似[T, V]的形式。

好了,水完跟Java類似的部分,下面講講Scala做得好的部分。

相信你一定見過這樣的代碼,把一個字符串類型的日期,轉換爲Date,通常會根據不同的合適進行適配,比如20201226和2020-12-26。通常大部分日期格式都是第二種,因此會定義2個函數,一個需要str和pattern 2個參數,一個只需要str一個參數。

但是,在Scala中,你可以通過一個帶默認值的函數來完成Java裏2個函數的功能。

def str2Date(str : String, pattern : String = "yyyy-MM-dd") : Date = {
    …
} 

str2Date("20201226", "yyyy-MM-dd")

str2Date("2020-12-26")


在語法上,通過pattern參數後面加一個等號來完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章