scala

模式匹配

  1. 在jdk1.7之前,Java的 switch 關鍵字只可以處理原生類型(int 、short 、byte 、char)和枚舉類型。在jdk1.7以後,switch新增了對String類型的處理。
    scala的模式匹配則可以處理各種複雜的類型以及場景。
  2. 常量匹配、變量匹配、列表和元組匹配
    scala
    在最後一行指令中_是一個通配符,它保證了我們可以處理所有的情況。否則當傳進一個不能被匹配的值的時候,你將獲得一個運行時錯誤。
    Nil是一個空的List,定義爲List[Nothing]。
    scala
    scala
  3. 類型匹配
    scala
    case 子句支持"或"邏輯,使用|即可;

閉包

閉包是一個函數,返回值依賴於聲明在函數外部的一個或多個變量。
閉包通常來講可以簡單的認爲是可以訪問一個函數裏面局部變量的另外一個函數。
比如函數:val multiplier = (i:Int) => i * factor;factor不是形式參數,而是自由變量;這樣定義的函數變量 multiplier 成爲一個"閉包",因爲它引用到函數外面定義的變量,定義這個函數的過程是將這個自由變量捕獲而構成一個封閉的函數。
scala

柯里化函數

將原來接受兩個參數的函數變成新的接受一個參數的函數的過程。新的函數返回一個以原有第二個參數爲參數的函數。
def sum(x:Int,y:Int)=x+y,柯里化之後就是def sum(x:Int)(y:Int) = x + y。
這個函數是什麼意思呢? 接收一個x爲參數,返回一個匿名函數,該匿名函數的定義是:接收一個Int型參數y,函數體爲x+y

偏函數與偏應用函數

偏函數不是函數,Scala中的Partia Function是一個Trait,其的類型爲PartialFunction[A,B],其中接收一個類型爲A的參數,返回一個類型爲B的結果。scala
偏函數內部有一些方法,比如isDefinedAt、OrElse、 andThen、applyOrElse

  1. isDefinedAt:判斷傳入的參數是否在處理範圍內scala
  2. orElse : 將多個偏函數組合起來使用,效果類似case語句。scala
  3. andThen: 相當於方法的連續調用,比如g(f(x))。scala
  4. applyOrElse:它接收2個參數,第一個是調用的參數,第二個是個回調函數。如果第一個調用的參數匹配,返回匹配的值,否則調用回調函數。
    scala

偏應用函數,是指一個函數有n個參數, 而我們爲其提供少於n個參數, 那就得到了一個部分應用函數。
scala

object與class

scala 中沒有 static 關鍵字
所以 對於一個class來說,所有的方法和成員變量在實例被 new 出來之前都是無法訪問的;
scala object 中所有成員變量和方法默認都是 static 的;
所以只有object中的main方法是可以直接訪問的。

scala中集合

map定義:var verMap = Map[String, String]()
map添加元素:verMap += (mapKey -> categeryName)
list定義:var listNewValue: List[String] = List()
list添加元素:listNewValue :+= mulValue

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