統計網導讀 本文從安裝、基礎資料類型、運算子、函數等七個方面系統介紹了Scala的語言特性。不僅是Python程式員,任何有編程經驗或者希望入門的人都可以看看,對Scala做一個基礎的認識。
隨著業務和資料的需要,我們引入了Spark。Spark對Python的支援還是挺好的,但畢竟它還是使用Scala開發的,且現有的API並沒有100%覆蓋Python。所以就有了這篇文章,讓Python程式員可以接觸Scala這門更高(級)、更快(速)、更強(大)的(奧運精神)語言。
Scala兼具Python樣的開發效率,但又有Java般的執行效能,真是一不可多得的神器。(當然,魚和熊不可兼得,Scala的入門曲線相比Python是要那麼陡峭一丟丟) 1安裝
一般Linux系統都內建Python環境,但Scala是沒有的。這需要我們手動安裝,還需要安裝Java環境。Java環境的安裝這裡就不介紹了,網上很多。說說Scala的安裝吧。下載地址在http://scala-lang.org/download/2.11.7.html。
1 2 3 4 5 6 7 8 9
|
wget -c http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.tgz tar zxf scala-2.11.7 cd scala-2.11.7 ./bin/scala Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60). Type in expressions to have them evaluated. Type :help for more information.
scala>
|
我們可以看到終端出現了scala>提示符,這個就像Python的REPL一樣,Scala也擁有一個REPL。我們可以在這裡很方便的編寫一些代碼,測試一些想法。
對於Scala常用的IDE(整合式開發環境),推薦使用IDEA for scala plugins和scala-ide。
Scala的強大,除了它自身對多核編程更好的支援、函數式特性及一些基於Scala的第3方庫和架構(如:Akka、Playframework、Spark、Kafka……),還在於它可以無縫與Java結合。所有為Java開發的庫、架構都可以自然的融入Scala環境。當然,Scala也可以很方便的Java環境整合,比如:Spring。若你需要第3方庫的支援,可以使用Maven、Gradle、Sbt等編譯環境來引入。
Scala是一個物件導向的函數式特性程式設計語言,它繼承了Java的面向對特性,同時又從Haskell那裡吸收了很多函數式特性並做了增強。 2Hello, world.
通常情況下,Java系的程式都需要有一個main方法來執行。並需要放入一個Web container容器,或打成一個jar包來執行。但是Scala不一樣,它除了支援傳統的Java方式,它也可以像Python一樣把代碼儲存到一個指令檔裡(.scala)執行,就像一個Shell指令碼一樣。
1 2 3 4 5 6 7 8
|
yangjing-mac-air:scala-2.11.7 jingyang$ cat test.scala #!/bin/sh exec scala "$0" "$@" !# // Say hello to the first argument println("Hello, "+ args(0) +"!") yangjing-mac-air:scala-2.11.7 jingyang$ ./test.scala 楊景 Hello, 楊景!
|
(註:需要把$SCALA_HOME/bin加入系統內容變數才能直接執行scala命令)
可以看到,使用Scala,你除了像傳統的Java程式一樣把它做為一個“服務”的方式來啟動,你也可以把它像Python一樣做為一個“指令碼”來啟動。
(注意:Scala不像Python一樣通過代碼縮排來表示代碼的層次關係,而是和通常的語言一樣使用{}來表示代碼的層級。給程式員更多的自由) 3變數、基礎資料類型
Scala中變數不需要顯示指定類型,但需要提前聲明。這可以避免很多命名空間汙染問題。Scala有一個很強大的類型自動推導功能,它可以根據右值及上下文自動推匯出變數的類型。你可以通過如下方式來直接聲明並賦值。