1. 程式人生 > >Scala - 01 - Scala簡介

Scala - 01 - Scala簡介

import語句 優雅 new .org port 輸入 repl bsp sheet

Scala簡介

Scala(Scalable Language)是一門多範式(multi-paradigm)編程語言,Scala的設計吸收借鑒了許多種編程語言的思想,具備面向對象編程、函數式編程等特性。
  • Scala具備強大的並發性,支持函數式編程,可以更好地支持分布式系統;
  • Scala語法簡潔,能提供優雅的API;
  • Scala兼容Java,運行速度快,且能融合到Hadoop生態圈中;

Scala特性

  • 交互式編程:提供REPL(Read-Eval-Print Loop,交互式解釋器),可以即時查看中間結果並修改
  • 可伸展的(Scalable)編程語言:小腳本到大規模系統編程都能勝任
  • 純正的面向對象語言:每個值都是對象,每個操作都是方法調用
  • 函數式語言:沒有可變變量,不會有內存共享的問題
  • 兼容Java,無縫的Java互操作:
  • Scala運行於Java平臺(JVM,Java 虛擬機)上,,scalac編譯器將.scala源文件編譯成.class文件(Java字節碼),被JVM加載並執行;
  • 兼容並可以調用現有的Java類庫,Java包可以被import到Scala來直接調用Java方法,訪問Java字段,繼承Java類和實現Java接口;
  • Scala也可以被Java直接調用;

Scala文檔

Docs:http://docs.scala-lang.org/ API Docs:
http://www.scala-lang.org/api/current/ zh-cn
  • http://docs.scala-lang.org/zh-cn/
  • http://docs.scala-lang.org/zh-cn/cheatsheets/
  • http://docs.scala-lang.org/zh-cn/overviews/

Scala基礎教程

  • 菜鳥教程 - Scala http://www.runoob.com/scala/scala-tutorial.html
  • 易百教程 - Scala http://www.yiibai.com/scala/

Scala編碼約定

  • 區分大小寫 - Scala區分大小寫
  • 類名稱 - 所有類名應以大寫字母開頭。如果包含多個單詞,則每個內部單詞的第一個字母應該是大寫。
  • 方法名稱 - 所有方法名稱應以小寫字母開頭。如果包含多個單詞,則每個內部單詞的第一個字母應為大寫。
  • 程序文件名 - 程序文件的名稱必須與對象名稱完全匹配,並將.scala作為文件後綴,否則將不會編譯。
  • def main(args:Array [String]) - Scala程序從main()方法開始,Scala程序的強制性部分。

Scala換行符

  • Scala是一種面向行的語言,其語句以分號(;)或換行符終止。
  • 語句結尾處的分號(;)通常是可選的。語句在單行上自行顯示,則不需要輸入。
  • 如果在單行上寫多個語句,則需要分號。
在命令行下,通常Scala解釋器會推斷出輸入的代碼是否結束。 如果還沒有結束,解釋器就會在下一行顯示一個豎線“|”,可以繼續輸入剩余的代碼。 如果想放棄本次輸入,可以在“|”後面連續敲入兩個回車,結束本次輸入。
scala> val test =
     |
     |
You typed two blank lines.  Starting a new command.

scala>

Scala註釋

  • Scala單行和多行註釋與Java類似。
  • 註釋中任何字符都被Scala編譯器忽略。
  • 多行註釋可以嵌套,但需要正確嵌套。

Scala包

使用 package 關鍵字定義包。
  • 一個包是一個命名的代碼模塊
  • 包聲明是源文件中的第一個非註釋行
  • 導入Scala軟件包,以便在當前的編譯範圍內引用
  • 可以從單個包導入單個類和對象,也可以導入多個類或對象
使用 import 關鍵字引用包。
  • import語句可以出現在任何地方,而不是只能在文件頂部。
  • import的效果從開始延伸到語句塊的結束。
import java.awt.Color  // 引入Color
import java.awt._  // 引入包內所有成員
import java.awt.{Color, Font}  //引入包中的幾個成員,可以使用selector(選取器)

import java.util.{HashMap => JavaHashMap}  //重命名成員
import java.util.{HashMap => _, _}   //隱藏成員  //引入了util包的所有成員,但是HashMap被隱藏了

註意:默認情況下,Scala 總會引入 java.lang._ 、 scala._ 和 Predef._。

Scala - 01 - Scala簡介