好程式設計師大資料學習路線分享Scala系列之基礎篇
好程式設計師大資料學習路線分享Scala系列之基礎篇 瞭解Scala
1.1 什麼是 Scala
Scala 是 Scalable Language 的簡寫,是一門多正規化的程式語言。
Scala設計的初衷是要整合物件導向程式設計和函數語言程式設計的各種特性。Scala執行於Java平臺(Java虛擬機器),併相容現有的Java程式。
函數語言程式設計兩種理念:就是一種抽象程度很高的程式設計正規化,純粹的函數語言程式設計語言編寫的函式沒有變數,因此,任意一個函式,只要輸入是確定的,輸出就是確定的,這種純函式我們稱之為沒有副作用。而允許使用變數的程式設計語言,由於函式內部的變數狀態不確定,同樣的輸入,可能得到不同的輸出,因此,這種函式是有副作用的。
函數語言程式設計的一個特點就是,函式也是值,同允許把函式本身作為引數傳入另一個函式,還允許返回一個函式!
1.2 Scala 特點
Scala 是物件導向的
Scala是一個純物件導向的語言,所有的值都是物件,類和物件行為用類和特質來描述.
Scala 是函式式的
Scala中函式是高等公民,所有函式都是值.
Scala是靜態型別的
Scala 是可擴充套件的
1.3 為什麼要學 Scala
1.優雅:這是框架設計師第一個要考慮的問題,框架的使用者是應用開發程式設計師,API是否優雅直接影響使用者體驗。
2.速度快:Scala語言表達能力強,一行程式碼抵得上Java多行,開發速度快;Scala是靜態編譯的,所以和JRuby,Groovy比起來速度會快很多。
3.能融合到Hadoop生態圈:Hadoop現在是大資料事實標準,Spark並不是要取代Hadoop,而是要完善Hadoop生態。JVM語言大部分可能會想到Java,但Java做出來的API太醜,或者想實現一個優雅的API太費勁。
2 環境準備
2.1 JDK 安裝
因為Scala是執行在JVM平臺上的,所以安裝Scala之前要安裝JDK
2.2 Scala 安裝
下載Scala地址然後解壓Scala到指定目錄
tar -zxvf scala-2.10.6.tgz -C /usr/java
配置環境變數,將scala加入到PATH中
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin
2.3. Scala 開發工具安裝
目前Scala的開發工具主要有兩種:Eclipse和IDEA,這兩個開發工具都有相應的Scala外掛,如果使用Eclipse,直接到Scala官網下載即可。
由於IDEA的Scala外掛更優秀,大多數Scala程式設計師都選擇IDEA,可以到下載社群免費版,點選下一步安裝即可,安裝時如果有網路可以選擇線上安裝Scala外掛。這裡我們使用離線安裝Scala外掛:
1.安裝IDEA,點選下一步即可。由於我們離線安裝外掛,所以點選Skip All and Set Defaul
2.下載IEDA的scala外掛
3.安裝Scala外掛:File -> settings -> Plugins -> Install plugin from disk -> 選擇Scala外掛 -> OK -> 重啟IDEA
3. Scala 基礎
3.1. 值和變數
使用var 宣告一個變數。
- scala語言是強型別語言。
- var修飾的變數,內容和引用都可變
使用val宣告一個常量或值
- val修飾的變數是不可變的,注意不可變的不是內容,而是引用;
- val修飾的變數,相當於Java中final修飾的變數;
- 只有val修飾的變數才能被lazy修飾;使用lazy定義變數後,只有在呼叫該變數時才會例項化這個變數的值。而且惰性變數只能是不可變變數;
//
變數定義方式
var a:int = 1
var aa = 1
val aaa:Int = 3
val aaaa = 4
lazy
val aaaaa = 4
官方推薦使用val。
2.val和var區別示意:
可以使用陣列,更容易懂
class A(n: Int) {
var value = n
}
class B(n: Int) {
val value =
new A(n)
}
object Test {
def main(args: Array[String]) {
val x =
new B(5)
x =
new B(6)
//
錯誤
?
x.value =
new A(6)
//
錯誤
?
x.value.value = 6
//
正常
}
}
3.lazy
類似方法,先宣告,後呼叫
4.val or var
在val和var均可的條件下,官方推薦使用val
3.2. 常用型別
Scala和Java一樣,有7種數值型別Byte、Char、Short、Int、Long、Float、Double和一個Boolean型別,
和Java不同的是 ,Scala沒有基本型別與包裝型別之分,這些型別都是類,有自己的屬性和方法。
相當於Java的包裝類;
1.toString()
1.to (10)
scala型別層級關係:
scala中所有的值都有型別,包括數值和函式.
scala 型別轉換:
val x: Long = 987654321
val y: Float = x
// 9.8765434E8 (note that some precision is lost in this case)
val face: Char = '☺'
val number: Int = face
// 9786
3.3. 運算子
Scala中沒有運算子,只是以運算子的格式去進行方法呼叫。
//
數學運算子
+
、
-
、
*
、
/
、
%
//
關係運算子
> < >= <= !
//
邏輯運算子
&& ||
//
位運算子
| & ^ ~
//
比較物件是否相等
==
!
=
注意:
a + b 等價於 a.+(b)
Scala沒有++,-- 可以用+=,-=代替
運算子都是方法的過載,是方法的呼叫
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2655582/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料學習路線分享Scala系列之物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享Scala系列之抽象類程式設計師大資料抽象
- 好程式設計師大資料學習路線分享Scala系列之陣列程式設計師大資料陣列
- 好程式設計師大資料學習路線分享Scala系列之泛型程式設計師大資料泛型
- 好程式設計師大資料學習路線分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線分享Scala系列之對映Map程式設計師大資料
- 好程式設計師大資料學習路線分享Scala系列之集合操作函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享大資料之基礎語法程式設計師大資料
- 好程式設計師大資料學習路線分享Scala分支和迴圈程式設計師大資料
- 好程式設計師大資料學習路線分享大資料之字串程式設計師大資料字串
- 好程式設計師大資料教程分享Scala系列之閉包程式設計師大資料
- 好程式設計師大資料分享Scala系列之柯里化程式設計師大資料
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料學習路線分享SparkSQl程式設計師大資料SparkSQL
- 好程式設計師大資料學習路線分享scala單列和伴生物件程式設計師大資料物件
- 好程式設計師大資料學習路線分享大資料之執行緒程式設計師大資料執行緒
- 好程式設計師大資料學習路線分享Hbase指令學習程式設計師大資料
- 好程式設計師大資料教程Scala系列之類程式設計師大資料
- 好程式設計師大資料學習路線Hadoop學習乾貨分享程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享HDFS學習總結程式設計師大資料
- 好程式設計師大資料學習路線分享hdfs學習乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享Actor學習筆記程式設計師大資料筆記
- 好程式設計師大資料學習路線分享Map學習筆記程式設計師大資料筆記
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料學習路線之mapreduce概述程式設計師大資料
- 好程式設計師大資料學習路線分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料學習路線分享AWK詳解程式設計師大資料
- 好程式設計師大資料學習路線分享UDF函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Lambda表示式程式設計師大資料
- 好程式設計師大資料教程Scala系列之繼承程式設計師大資料繼承
- 好程式設計師web前端學習路線分享函式基礎程式設計師Web前端函式
- 好程式設計師大資料學習路線之zookeeper乾貨程式設計師大資料
- 好程式設計師大資料學習路線分享高階函式程式設計師大資料函式
- 好程式設計師大資料學習路線分享Hadoop機架感知程式設計師大資料Hadoop
- 好程式設計師大資料教程分享Scala系列之Option_偏函式_String程式設計師大資料函式
- 好程式設計師大資料學習路線分享TCP和UDP學習筆記程式設計師大資料TCPUDP筆記
- 好程式設計師大資料學習路線分享MapReduce全過程解析程式設計師大資料
- 好程式設計師大資料學習路線分享hive的執行方式程式設計師大資料Hive