Scala學習一:基礎

Scala 學習一:基礎


  • Scala 解釋器具有補全功能

  • Scala 中不需要給出值或變量的類型,類型會從給出的初始表達式推斷出來

  • Scala 在一條語句後不需要使用分號,僅當週一行代碼中存在多條- 語句時才需要使用分號

  • Scala 中 byte, char, short, int, long, float, double 7種基本類型是類,所以可以直接調用方法.

  • Scala 中的字符串是用JavaString 實現的, Scala提供了更多的便捷方法

  • Scala 中使用方法,而不是強制類型轉換,來現實數值之間的轉換

  • Scala 中的 一般 操作符和Java中的作用是一樣的,不同的是他們是方法 a + b 等價於 a.+(b)。但是 Scala 中沒有 ++, – 操作符

  • Scala 中使用 “Scala.” 開頭的包名時, 可以省去Scala.

  • Scala 中導入包中所有類的語句是

import aa.bb._      //導入某個包下所有類
import aa.bb.{A,B}  //導入包下多個類
Java是
import aa.bb.*;     //注意:分號是不能少的
import aa.bb.A;
import aa.bb.B;
  • Scala 中沒有靜態方法,但是有單例對象. Java中有靜態方法 static

  • Scala 調用apply方法不需要顯式聲名, 可以理解爲將apply方法當作是 “()” 操作符的重載.

"Hello"(4) //結果爲 "o" 就等於 "Hello".apply(4)
val list = List(1,2) //就是調用了 List.apply[A](xs:A*) 方法
  • 在Java中爲了區分邏輯結構 或 功能可以用 {} 包住一系列Java語句. 而Scala{}塊包含一系列表達式, 其結果也是一個表達式. 塊語句最後一句表達式的值就是該塊的值。這個特性對於某個val初始化需要多步完成的情況很有用.

  • Scala中的賦值語句返回值是Unit 即 (),爲了避免出錯,不要使用:

x = y = 1
// 語句可以正常運行,但沒有意義.
var a = ()
var b = 0
a = b = 1
println(a)
println(b)
  • 懶值
    當val被聲明爲lazy時,初始化就會推遲, 值到首次對它取值。
println("------- lazy val [result]")
lazy val words = scala.io.Source.fromFile("/Users/xxxx/words.txt").mkString
// println(" words = " + words) ## 註釋掉此句,words.txt 不存在,也不會報錯

爲了方便證明,把文件路徑寫錯,不訪問words,不出錯,直到首次訪問words。

懶值並不是沒有開銷,每次訪問懶值,都會有一個方法被調用,這個方法會以線程安全的形式檢查該值是否被初始化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章