1.初識scala

neuyu發表於2021-09-09

簡介

  Scala(Scala Language的簡稱)語言是一種能夠執行於JVM和.Net平臺之上的通用程式語言,既可用於大規模應用程式開發,也可用於指令碼程式設計。

  Scala由Martin Odersk於2001開發,2004年開始程式執行在JVM與.Net平臺之上,由於其簡潔、優雅、型別安全的程式設計模式而受到關注。

圖片描述

Scala創始人——Martin Odersk.jpg

  在Scala的建立之初,並沒有怎麼引起重視。隨著Apache Spark和Apache Kafka這樣基於Scala的大資料框架的崛起,Scala逐步映入大資料從業者的眼簾。Scala的擁護者們認為Scala的主要優勢是速度和它的表達性。

  目前使用scala的作為支撐公司開發語言的包括Foursquare和Twitter。2009年Twitter把大部分後臺系統的開發語言從Ruby換成了Scala。

特性

物件導向

  scala是一種純物件導向的語言,每個值都是物件。物件的資料型別以及行為由類和特質描述。

函數語言程式設計

  Scala是一種函式式語言,其函式也能當成值來使用。Scala提供了輕量級的語法用以定義匿名函式,支援高階函式,允許巢狀多層函式,並支援柯里化。

靜態型別

  Scala具備型別系統,透過編譯時檢查,保證程式碼的安全性和一致性。型別系統具體支援以下特性:

  • 泛型類

  • 協變和逆變

  • 標註

  • 型別引數的上下限約束

  • 把類別和抽象型別作為物件成員

  • 複合型別

  • 引用自己時顯式指定型別

  • 檢視

  • 多型方法

擴充套件性

  Scala提供了許多獨特的語言機制,可以以庫的形式輕易無縫新增新的語言結構:

  • 任何方法可用作字首或字尾運算子

  • 可以根據預期型別自動構造閉包

併發性

  Scala使用Actor作為其併發模型,Actor是類似執行緒的實體,透過郵箱發收訊息。

  Actor可以複用執行緒,因此可以在程式中可以使用數百萬個Actor,而執行緒只能建立數千個。在2.10之後的版本中,使用Akka作為其預設Actor實現。

程式設計方式

互動式程式設計

  互動式程式設計不需要建立指令碼檔案,可以透過以下命令呼叫。

$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 1 + 1res0: Int = 2scala> println("Hello World!")
Hello World!

scala>

指令碼形式

 建立一個 HelloWorld.scala 的檔案來執行程式碼

object HelloWorld {   /* 這是我的第一個 Scala 程式
    * 以下程式將輸出'Hello World!' 
    */
   def main(args: Array[String]) {
      println("Hello, world!") // 輸出 Hello World
   }
}

接下來我們使用 scalac 命令編譯它:

$ scalac HelloWorld.scala 
$ ls
HelloWorld$.class    HelloWorld.scalaHelloWorld.class

使用以下命令來執行程式

$ scala HelloWorld
Hello, world!

基本語法

  • 區分大小寫:Scala是大小寫敏感的,這意味著標識Hello 和 hello在Scala中會有不同的含義。

  • 類名:對於所有的類名的第一個字母要大寫。如果需要使用幾個單詞來構成一個類的名稱,每個單詞的第一個字母要大寫。示例:class MyFirstScalaClass

  • 方法名稱:所有的方法名稱的第一個字母用小寫。如果若干單詞被用於構成方法的名稱,則每個單詞的第一個字母應大寫。示例:def myMethodName()

  • def main(args: Array[String]):Scala程式從main()方法開始處理,這是每一個Scala程式的強制程式入口部分。

關鍵字

圖片描述

關鍵字.png

註釋

  Scala 類似 Java 支援單行和多行註釋。多行註釋可以巢狀,但必須正確巢狀,一個註釋開始符號對應一個結束符號。註釋在 Scala 編譯中會被忽略,例項如下:

object HelloWorld {   /* 這是一個 Scala 程式
    * 這是一行註釋
    * 這裡演示了多行註釋
    */
   def main(args: Array[String]) {      // 輸出 Hello World
      // 這是一個單行註釋
      println("Hello, world!") 
   }
}

變數

  Scala中,使用關鍵詞"var"宣告變數,使用關鍵詞 "val"宣告常量。

val myVar : String = "Foo"var myVar : String = "Too"

  在 Scala 中宣告變數和常量不一定要指明資料型別,在沒有指明資料型別的情況下,其資料型別是透過變數或常量的初始值推斷出來的。

  所以,如果在沒有指明資料型別的情況下宣告變數或常量必須要給出其初始值,否則將會報錯。

var myVar = 10;
val myVal = "Hello, Scala!";

宣告多個變數

// xmax, ymax都宣告為100val xmax, ymax = 100



作者:java大資料程式設計
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4550/viewspace-2815126/,如需轉載,請註明出處,否則將追究法律責任。