2-類和對象(Scala)

前言

本節介紹Scala 的類和對象。
環境:
windows + Scala-2.12.8
GitHub:
https://github.com/GYT0313/Scala-Learning

1. 類、字段和方法

  1. 定義類
    在這裏插入圖片描述
  2. 實例化一個類
    在這裏插入圖片描述
  3. 定義一個完整的類,包括成員、方法
    文件名:ChecksumAccumulator.scala
// 計算校驗和
class ChecksumAccumulator {
  private var sum = 0
  def add(b: Byte): Unit = {sum += b}
  def checkSum(): Int = ~(sum & 0xFF) + 1
}

2. 單例對象

單例對象的關鍵字爲 object ,與類名同名的單例對象,兩者可以互相訪問私有變量。單例對象稱爲這個類的伴生對象,這個類成爲單例對象的伴生類。單獨存在的伴生對象稱爲孤立對象
文件名:ChecksumAccumulator.scala (與上面代碼同一個文件)

import scala.collection.mutable

object ChecksumAccumulator {
  // 緩存,存儲字符串和其校驗和
  private val cache = mutable.Map.empty[String, Int]

  def calculate(s: String): Int = {
    // 如果已存在,則返回校驗和
    if (cache.contains(s))
      cache(s)
    else {
      val acc = new ChecksumAccumulator
      // 遍歷字符串,計算校驗和
      for (c <- s)
        acc.add(c.toByte)
      val cs = acc.checkSum()
      // 加入到緩存
      cache += (s -> cs)
      cs
    }
  }
}

3. Scala 應用程序

要運行一個Scala程序,必須提供一個獨立對象的名稱。這個獨立對象要包含一個main方法,該方法接收一個Array[String] 作爲參數。main方法作爲應用程序的入口。
文件:Summer.scala

import ChecksumAccumulator.calculate

object Summer {
  def main(args: Array[String]) = {
    for (arg <- args)
      println(arg + ": " + calculate(arg))
  }
}

編譯運行:博主使用的是GitBash,使用CMD一樣的效果
在這裏插入圖片描述
scalac 編譯(產生Java字節碼),scala Summer 執行(Summer 爲單例對象的名稱)。
使用scalac 編譯時間會比較成,因爲,每次編譯啓動會花時間掃描JAR文件的內容以及執行其他一些初始化工作,然後再編譯文件。
所有,scala提供了另外一個編譯命令 fsc,第一次啓動會花費時間,但它會駐留在後臺,開啓一個端口。所以,下次編譯會節省一定的時間。
編譯執行如:
在這裏插入圖片描述
關閉:fsc -shutdown
在這裏插入圖片描述

完!

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