==> Scala語言簡介
--> Scala程式設計語言抓住了很多開發者的眼球。如果你粗略浏覽Scala的網站,你會覺得Scala是一種純粹的面向對象程式設計語言,而又無縫地結合了指令式程式設計和函數式程式設計風格
--> 不太久之前程式設計語言還可以毫無疑意地歸類成“指令式”或者“函數式”或者“面向對象”。Scala代表了一個新的語言品種,它抹平了這些人為劃分的界限。
==> Scala有幾項關鍵特性表明了它的面向對象的本質
--> Scala中的每個值都是一個對象,包括基本資料類型(即布爾值、數字等)在内,連函數也是對象。
--> 類可以被子類化,而且Scala還提供了基于mixin的組合(mixin-based composition)
--> 與隻支援單繼承的語言相比,Scala具有更廣泛意義上的類重用。Scala允許定義新類的時候重用“一個類中新增的成員定義(即相較于其父類的差異之處)”。Scala稱之為mixin類組合。
--> Scala還包含了若幹函數式語言的關鍵概念,包括高階函數(Higher-Order Function)、局部套用(Currying)、嵌套函數(Nested Function)、序列解讀(Sequence Comprehensions)等等。
--> Scala是靜态類型的,這就允許它提供泛型類、内部類、甚至多态方法(Polymorphic Method)。另外值得一提的是,Scala被特意設計成能夠與Java和.NET互操作。Scala目前版本還不能在.NET上運作(雖然上一版可以-_-b),但按照計劃将來可以在.NET上運作。
--> Scala可以與Java互操作。它用scalac這個編譯器把源檔案編譯成Java的class檔案(即在JVM上運作的位元組碼)。你可以從Scala中調用所有的Java類庫,也同樣可以從Java應用程式中調用Scala的代碼。
==> 為什麼我要使用Scala?
--> Scala的設計始終貫穿着一個理念:創造一種更好地支援元件的語言。(《The Scala Programming Language》,Donna Malayeri)也就是說軟體應該由可重用的部件構造而成。Scala旨在提供一種程式設計語言,能夠統一和一般化分别來自面向對象和函數式兩種不同風格的關鍵概念
==> Scala得以提供一些出衆的特性
--> 面向對象風格
--> 函數式風格
--> 更高層的并發模型
--> Scala把Erlang風格的基于actor的并發帶進了JVM。開發者可以利用Scala的actor模型在JVM上設計具伸縮性的并發應用程式,它會自動獲得多核心處理器帶來的優勢,而不必依照複雜的Java線程模型來編寫程式。
--> 輕量級的函數文法
--> 高階
--> 嵌套
--> 局部套用(Currying)
--> 匿名
--> 與XML內建
--> 可在Scala程式中直接書寫XML
--> 可将XML轉換成Scala類
--> 與Java無縫地互操作
==> Scala 是一種多範式的程式設計語言,設計意圖是要內建面向對象程式設計和函數式程式設計的各種特性
==> 技巧
-->
--> 不要陷入C++一樣的、不斷膨脹的問題裡,留下太多的選擇,且沒有清晰的最佳實踐。這導緻每個人都在選擇不同的子集。要提供适應的指導。
--> 記住,反對不良的設計功能與增加新功能同等重要——這很殘酷。
--> 考慮拆分語言為産生環境建立可行的标準。為學術世界節省成本是一個明智的選擇。迎合企業的需要,獲得更大的采用。
--> 庫的編寫者應該看看Java API,确認是否應該有功能調用或結構化功能,為了更好的閱讀。不要為了流動性在跳躍太大來與Ruby競争。
--> 最後,當人們提出的建設性的批評時,不要感到失望。如果同樣的報怨不斷出現,那就說明應該重視一下。
==> 環境部署
--> 由于 Scala 是基于 JVM 運作的,是以需要配置 JAVA環境,這裡不在複述
--> 安裝Scala:下載下傳 http://www.scala-lang.org/download/
注意:版本跟Spark的Scala版本一緻
scala-2.11.8.zip
--> Scala的運作環境(開發工具)
--> 指令行:REPL
--- 進入: scala
--- 退出::quit
--- (*) paste 模式: 相當于vi編輯器
--- 進入: :paste
--- 退出: ctrl+D
--> IDEA
--- 預設:沒有Scala的環境
--- 需要安裝插件:SBT(需要聯網,有點慢)
(3)Scala IDE:基于Eclipse
--> 參考此連結:http://blog.csdn.net/yuanguangyu1221/article/details/50889522
本文轉自 菜鳥的征程 51CTO部落格,原文連結:http://blog.51cto.com/songqinglong/2071186