體驗 Scala 2.12 支持的 Java 8 風格(SAM) Lambda

上一次關注 Scala 新版本特性仍是在將近五年前,針對的是  Scala 2.10. 後來也一直在使用 Scala,基本上是 Scala 2.11,但對 Scala 2.11 所帶來的新特性基本無知,大約有個 Macro 功能,沒什麼機會用上,應用 sbt 時稍有接觸。仍是老句老話,瞭解新特性最可靠的文檔是每一個版本的的 Release Notes, 好比 Scala 2.12.0 Release Notes.java

其中 Scala 2.12 帶來的主要特性在於對 Java 8 的充分支持:git

  1. Scala 能夠有方法實現的 trait 直接編譯爲帶默認方法的 Java 接口
  2. Lambda 表達式無需生成相應的類,而是用到 invokedynamic 字節碼指令(這個是 Java 7 加進來的新指令)
  3. 最方便的功能莫過於終於支持 Java  8 風格的 Lambda,即功能性接口的 SAM(Single Abstract Method)

Scala 的 Lambda 內部實現

這兒主要是體驗 Scala 2.12 如何使用 Java 8 風格的 Lambda. 在 Scala 2.12 以前,Scala 對 Lambda 的支持是爲你準備了一大堆的 trait 類,有github

  1. Function0, Function1, ...... Function22 (接收多個參數,返回一個值)
  2. Product1, Product2, ...... Product22 (函數返回多個值,即 TupleX 時用的)

閱讀全文 >>函數

相關文章
相關標籤/搜索