1. 程式人生 > >Scala基本瞭解

Scala基本瞭解

What is Scala

Scala 產生於瑞士的洛桑聯邦理工學院(EPFL),是“可擴充套件語言”
(Scalable Language)的縮寫,

Sala 是一門靜態型別語言

名詞解釋:
靜態型別語言 :

編譯期間會發生型別檢查,一般是構建比較複雜的架構

動態型別語言

執行期間發生型別檢查

按照JAVA虛擬機器為目標執行環境並將面向物件函數語言程式設計最佳的特性結合的一門程式語言,可以訪問Java類庫並且與java孔家進行相互操作

  1. 執行在 JVM 和 和 JavaScript 之上的語言

Scala 不僅利用了 JVM 的高效能以及最優化性,Java 豐富的工具及類
庫生態系統也為其所用。不過 Scala 並不是只能執行在 JVM 之上! Scala.js(

http://www.scala-js.org)正在嘗試將其遷移到 JavaScript 世界

  1. 靜態型別

在 Scala 語言中,靜態型別(static typing)是構建健壯應用系統的一個工具,Scala 修正了 Java 型別系統中的一些缺陷,此外通過型別推演(typeinference)也免除了大量的冗餘程式碼

  1. 混合式程式設計正規化 混合式程式設計正規化 ——面向物件程式設計。Scala 引入特徵(trait)改進了,trait 能通過使用混合結構(mixin composition)簡潔地實現新的型別。在 Scala 中,一切都是物件,即使是數值型別。

  2. 混合 混合 式程式設計正規化 ——程 函數語言程式設計

    Scala 完全支援函數語言程式設計(FP),函數語言程式設計已經被視為解決併發、大資料以及程式碼正確性問題的最佳工具。使用不可變值、被視為一等公民的
    函式、無副作用的函式、高階函式以及函式集合,有助於編寫出簡潔、強大
    而又正確的程式碼。

  3. 複雜的型別系統Scala 對 Java 型別系統進行了擴充套件,提供了更靈活的泛型以及一些有助
    於提高程式碼正確性的改進。通過使用型別推演,Scala 編寫的程式碼能夠和動態
    型別語言編寫的程式碼一樣精簡。

  4. 簡潔、優雅、靈活的語法

    使用 Scala 之後,Java 中冗長的表示式不見了,取而代之的是簡潔的

    Scala 方言。Scala 提供了一些工具,這些工具可用於構建領域特定語言(DSL),以及對使用者友好的 API 介面。

  5. 可擴充套件的架構

使用 Scala,你能編寫出簡短的解釋性指令碼,並將其粘合成大型的分散式
應用。以下四種語言機制有助於提升系統的擴充套件性:

(1)使用 trait 實現的混合結構

(2)抽象型別成員和泛型

(3)巢狀類

(4)顯式自型別(self type)

擴充套件:

動態語言和靜態語言

1.動態型別語言:是指在執行期間才去做資料型別檢查的語言。在用動
態語言程式設計時,不用給變數指定資料型別,該語言會在你第一次賦值給變
量時,在內部將資料型別記錄下來。Python 和 Ruby 就是一種典型的動態型別語言;

2.靜態型別語言:與動態型別語言剛好相反,它的資料型別檢查發生在
在編譯階段,也就是說在寫程式時要宣告變數的資料型別。C/C++、C#、JAVA 都是靜態型別語言的典型代表

強型別語言和弱型別語言

1.強型別語言:使之強制資料型別定義的語言。沒有強制型別轉化前,
不允許兩種不同型別的變數相互操作。強型別定義語言是型別安全的語
言,如 Java、C# 和 Python,比如 Java 中“int i = 0.0;”是無法通過編

2.弱型別語言:資料型別可以被忽略的語言。與強型別語言相反, 一個
變數可以賦不同資料型別的值,允許將一塊記憶體看做多種型別,比如直接
將整型變數與字元變數相加。JavaScript、PHP 都是弱型別語言。

注意,強型別語言在速度上略遜色於弱型別語言,使用弱型別語言可
節省很多程式碼量,有更高的開發效率。而對於構建大型專案,使用強型別
語言可能會比使用弱型別更加規範可靠。

面向 XX 程式設計

面向過程程式設計:整個程式按照步驟編寫,程式更著重業務步驟的。
面向物件程式設計:提出物件封裝概念,將業務修改成物件之間的關係處理。
面向介面程式設計:更高層次的抽象,將業務抽象成一些介面規則框架。
面向切面程式設計:另一個思考維度,著重於業務邏輯的動態組織。
指令式程式設計:關心解決問題的步驟
函數語言程式設計:關心資料的對映,是數學函式,不是程式中的函式概念

What is Scala

Scala 產生於瑞士的洛桑聯邦理工學院(EPFL),是“可擴充套件語言”
(Scalable Language)的縮寫,

Sala 是一門靜態型別語言

名詞解釋:
靜態型別語言 :

編譯期間會發生型別檢查,一般是構建比較複雜的架構

動態型別語言

執行期間發生型別檢查

按照JAVA虛擬機器為目標執行環境並將面向物件函數語言程式設計最佳的特性結合的一門程式語言,可以訪問Java類庫並且與java孔家進行相互操作

  1. 執行在 JVM 和 和 JavaScript 之上的語言

Scala 不僅利用了 JVM 的高效能以及最優化性,Java 豐富的工具及類
庫生態系統也為其所用。不過 Scala 並不是只能執行在 JVM 之上! Scala.js(http://www.scala-js.org)正在嘗試將其遷移到 JavaScript 世界

  1. 靜態型別

在 Scala 語言中,靜態型別(static typing)是構建健壯應用系統的一個工具,Scala 修正了 Java 型別系統中的一些缺陷,此外通過型別推演(typeinference)也免除了大量的冗餘程式碼

  1. 混合式程式設計正規化 混合式程式設計正規化 ——面向物件程式設計。Scala 引入特徵(trait)改進了,trait 能通過使用混合結構(mixin composition)簡潔地實現新的型別。在 Scala 中,一切都是物件,即使是數值型別。

  2. 混合 混合 式程式設計正規化 ——程 函數語言程式設計

    Scala 完全支援函數語言程式設計(FP),函數語言程式設計已經被視為解決併發、大資料以及程式碼正確性問題的最佳工具。使用不可變值、被視為一等公民的
    函式、無副作用的函式、高階函式以及函式集合,有助於編寫出簡潔、強大
    而又正確的程式碼。

  3. 複雜的型別系統Scala 對 Java 型別系統進行了擴充套件,提供了更靈活的泛型以及一些有助
    於提高程式碼正確性的改進。通過使用型別推演,Scala 編寫的程式碼能夠和動態
    型別語言編寫的程式碼一樣精簡。

  4. 簡潔、優雅、靈活的語法

    使用 Scala 之後,Java 中冗長的表示式不見了,取而代之的是簡潔的

    Scala 方言。Scala 提供了一些工具,這些工具可用於構建領域特定語言(DSL),以及對使用者友好的 API 介面。

  5. 可擴充套件的架構

使用 Scala,你能編寫出簡短的解釋性指令碼,並將其粘合成大型的分散式
應用。以下四種語言機制有助於提升系統的擴充套件性:

(1)使用 trait 實現的混合結構

(2)抽象型別成員和泛型

(3)巢狀類

(4)顯式自型別(self type)

擴充套件:

動態語言和靜態語言

1.動態型別語言:是指在執行期間才去做資料型別檢查的語言。在用動
態語言程式設計時,不用給變數指定資料型別,該語言會在你第一次賦值給變
量時,在內部將資料型別記錄下來。Python 和 Ruby 就是一種典型的動態型別語言;

2.靜態型別語言:與動態型別語言剛好相反,它的資料型別檢查發生在
在編譯階段,也就是說在寫程式時要宣告變數的資料型別。C/C++、C#、JAVA 都是靜態型別語言的典型代表

強型別語言和弱型別語言

1.強型別語言:使之強制資料型別定義的語言。沒有強制型別轉化前,
不允許兩種不同型別的變數相互操作。強型別定義語言是型別安全的語
言,如 Java、C# 和 Python,比如 Java 中“int i = 0.0;”是無法通過編

2.弱型別語言:資料型別可以被忽略的語言。與強型別語言相反, 一個
變數可以賦不同資料型別的值,允許將一塊記憶體看做多種型別,比如直接
將整型變數與字元變數相加。JavaScript、PHP 都是弱型別語言。

注意,強型別語言在速度上略遜色於弱型別語言,使用弱型別語言可
節省很多程式碼量,有更高的開發效率。而對於構建大型專案,使用強型別
語言可能會比使用弱型別更加規範可靠。

面向 XX 程式設計

面向過程程式設計:整個程式按照步驟編寫,程式更著重業務步驟的。
面向物件程式設計:提出物件封裝概念,將業務修改成物件之間的關係處理。
面向介面程式設計:更高層次的抽象,將業務抽象成一些介面規則框架。
面向切面程式設計:另一個思考維度,著重於業務邏輯的動態組織。
指令式程式設計:關心解決問題的步驟
函數語言程式設計:關心資料的對映,是數學函式,不是程式中的函式概念

在這裡插入圖片描述
指令式程式設計:
在這裡插入圖片描述

修改了儲存的記憶體結構

函數語言程式設計:

在這裡插入圖片描述

在這裡插入圖片描述
想要左邊的值,傳出去右邊的值即 x到y的對映,記憶體結構沒有改變