好程式設計師大資料學習路線分享Scala系列之基礎篇

好程式設計師IT發表於2019-08-30

好程式設計師大資料學習路線分享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.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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章