今天開始 Scala
為啥
因為 Java 麻煩啊。雖然 8 好點,但耐不住和別人比嘛。
你就說咋整
簡單來說兩件事:
- IDE 安裝 Scala 插件
- Gradle 添加 Scala 插件與編譯依賴
下載要花一點時間,趁亂可以出去喝杯茶,回來你就有 Scala 用了!
你做給我看看
首先我們劃拉一個 Gradle 項目:
同時 Intellij Idea 的 Scala 和 Scalafmt 插件可以先裝起來,反正你裝好了要重啟。
重啟完了,選擇 File → New → Project from existing sources 打開你劃拉回來的 Gradle 項目。
在 build.gradle 里添加以下內容,見高亮。
apply plugin: scala
給 Gradle 添加 Scala 工作流。
compile(org.scala-lang:scala-library:2.11.8)
添加 Scala 編譯器及 Scaladoc 依賴。
sourceSets { main { scala { srcDirs = [src/main/scala, src/main/java] } java { srcDirs = [] } }}
指定 build 時去哪找代碼。如果你 Java/Scala 互相調用比較複雜,那麼把 java 的 srcDirs 搬到 scala 裡面,compileScala 時就一起編掉了。否則只要聲明 scala 的 srcDirs 即可。
Intellij Idea 安裝 Scala 插件後可以 ??A Convert to Scala 把現有的 Java 代碼編譯到 Scala 聽個響,這個過程中你可以粗略看一下 Scala 的結構和 Java 是怎麼對應的。當然比較複雜的內容直接編譯過去可能不好用,Java 傳數組變參的語法或其它么蛾子也不能直接對應到 Scala(比方說一個 Spring Boot 的 main class 你就不能直接編譯過去,具體效果留作習題),我們用 Scala 也不是為了機翻 Java。當然此皆不在話下。
寫一段 Scala 跑跑看好了。看日誌。
現在什麼情況
我們本來有個純 Java 的 Gradle 項目,現在添加了 Scala 支持,這個項目就可以 Java/Scala 混編了。Java 和 Scala 源碼放在不同的目錄下,只要 package 對應就能一起幹活。至於哪裡用 Java 哪裡用 Scala 完全看你安排。畢竟同為 JVM 語言,群毆能力還是很強的。
接下來幹什麼
當然是學 Scala 啊。至於怎麼學,這樣跳到池子里自己比劃肯定是比較好的方法,況且有 Java 這個大退路也不吃虧。Scala 的特性汗牛充棟,隨需隨用也不礙事。也無所謂什麼怕生躲在舒適區的想法,畢竟和 Scala 比起來 Java 也不算什麼舒適區啊。
你當初是什麼想的
雖然是慘痛的黑歷史,但末將有一點 Haskell 背景。複雜的花式玩不來,簡單的基礎還算會用。Scala 的 FP 至少比半吊子 Java 8 好出一截,僅僅是 Pattern Matching 都能顯著提升在下的生活質量。
你如果在 PATH 里又裝了 scala/scalac,你當然是有一個 Scala REPL,但畢竟是 JVM 同門,這個 REPL 還可以拿來操作 Java 庫。
一個 Bonus,如果你像我一樣沒有搞懂尾遞歸 CPS 之類的玩意,Scala 還專門有個 @tailrec 池子供你比劃。
推薦閱讀:
※GPS 數據處理簡述(下)
※#scala#模式匹配
※從應用的角度談談學習go還是scala?
※Scala中何時應當使用Var變數?
※scala 逆變有什麼用?